if I make a c# script "BlueEnemyScript" inherit from script "EnemyScript", that's a "child object" in c#?
No, when you define something like public class BlueEnemyScript : EnemyScript, that's a "derived class". The class BlueEnemyScript "derives" or "inherits" from the "base class" or "superclass" EnemyScript.
A "child object" is when you nest one object under another in the Unity hierarchy, as shown in this image from the Unity docs:
In code it looks like this:
myGameObject.transform.parent = parentGameObject.transform; A prefab could be a child object, if you instantiate it under a parent/container of some kind, eg.
myInstance = Instantiate(myPrefab, parentTransform); A prefab can also contain its own child objects - you can have a whole hierarchy of parts making up one compound object.
When I instantiate this prefab...it will have it's own unique instance of BlueEnemyScript?
Yes. Each copy you Instantiate or drag into your scene has its own instance of the script, and can have its own values of any of the script's member variables.
If I were to instantiate the non child Enemy, but change it's parameters as part of the method to instantiate it, wouldn't it have the same effect since it has a unique instance of the script?
Yes, I'd strongly recommend not creating new scripts if all you want to do is change parameters.
You could make one Enemy script with gobs of prefabs mixing & matching different sets of parameters or other components, to define lots of different monsters without redundant code.
Or you can change the parameters of the object in your script when you instantiate it. The effect is the same. Some developers prefer to do everything in script like this, others prefer to keep this variation in the data like prefabs so it's easy to modularly add new types without code changes (which can help with a larger team where not everyone is a programmer)
Do I even need multiple instances because I'll only have one of the same object type active at a time? should I just swap which method inside the object script is being accessed?
This is definitely an option too. You can even destroy or disable unneeded components and AddComponent or enable others to change up the behaviour without needing to implement multiple subclasses. This is the principle of composition over inheritance that Unity's component system banks on.
