So the current practice in Unity is to create a public variable exposed to the editor which references a Prefab from the project panel.
Instantiate is then used to create a new object of this type.
public Transform myPrefab;
...
GameObject myObject;
myObject = (GameObject)MonoBehaviour.Instantiate(myPrefab, new Vector3(0,0,0), Quaternion.identity);
I understand that this gives you the ability to change the prefab at any time by dragging a different one to the script.
However, is there a way to instantiate a new GameObject just using the class name? E.g:
GameObject myObject = new MyPrefab();
Or even something like:
GameObject myObject;
myObject = (GameObject)MonoBehaviour.Instantiate(GetType('MyPrefab'), new Vector3(0,0,0), Quaternion.identity);