GameObject o = new GameObject("test"); also creates a game object. You do not need to call Instantiate as it creates a copy of a referenced game object in a current scene. Instantiated is needed to spawn prefabs, not empty game objects, because prefabs do not exist in scene and empty game objects you create like above do exist.