- Home /
Why Transform and not Prefab?
When scripting you need to create a variable of the type Transform but I can attach a prefab? What's the reason?
sorry about my poor english...
This question is far too vague to give any kind of meaningful answer. Could you be more specific as to what you're trying to do?
I think he's asking for the reasons behind why you declare the prefab link of type "Transform" - i.e. why there is no type 'Prefab'?
Answer by Damyan · Jan 24, 2011 at 01:41 PM
Instantiate actually takes something of type Object, not of type Transform. See: http://unity3d.com/support/documentation/ScriptReference/Object.Instantiate.html
The examples are quite unclear because they pass Transform instances into Instantiate, without mentioning why they're doing this. The vague documentation/examples leads to this sort of confusion.
Reading the documentation we do have for Object.Instantiate we see:
Clones the object original, places it at position and sets the rotation to rotation, then returns the cloned object.
So Object.Instantiate isn't really limited to working with prefabs; you can instantiate any object that you can get a reference to.
Prefabs are objects that aren't in the scene - you either get a reference to them by assigning them to your script in the inspector or via Resources.Load(). But when you clone them with Instantiate() they appear in the scene.
Thinking of it this way, it isn't obvious what a "Prefab" type would actually be in addition to being an Object or GameObject.
Answer by Borgo · Jan 24, 2011 at 12:29 PM
I Don't see any problem with this, yes, a Prefab is a Transform that you can instantiate (create a copy of this transform in the scene). The only diference is that the prefab is not in the scene.
I don't believe this is what he's asking. I think he's asking for the reasons behind why you declare the prefab link of type "Transform" - i.e. why there is no type 'Prefab'.
Your answer
Follow this Question
Related Questions
Can't remove instantiated prefab 0 Answers
Destroying & Then Spawning Quickly 1 Answer
parenting instantiated object 2 Answers
ReplacePrefab() resets transforms for instanced prefabs? 1 Answer