- Home /
Initialization of prefabs
Hey, i have an issue with understanding the way that prefabs are initialized. I have two scripts, one which initializes prefabs in a for loop, and the second one is attached to each prefab and is being executed in Start method. Is it normal that the second script is being executed after the whole for loop has been executed? For example:
// First script Update method
private void Update() {
for (var i = 0.5f; i < 3; i++) {
Debug.Log('Loop' + i);
PrefabUtility.InstantiatePrefab(tilePrefab as GameObject) as GameObject;
}
}
//Second script start method
private void Start() {
Debug.Log('Prefab start');
}
Will give me output:
Loop 0,5
Loop 1,5
Loop 2,5
Prefab start
Prefab start
Prefab start
instead of expected:
Loop 0,5
Prefab start
Loop 1,5
Prefab start
Loop 2,5
Prefab start
Is it supposed to work like that?
Answer by Bunny83 · May 06, 2018 at 12:53 AM
Start is called right before the first Update would be called on the object. Since you do the instantiate inside Update of your other script, Start of the instantiated objects will be called the next frame. You may want to use the Awake method. Awake is called before the Instantiate method returns. However it's only called when the prefab is active.
However your code looks really strange. The PrefabUtility is an editor class which can only be used in the editor. It's meant to be used at edit time only. At edit time no Start or Awake methods will be called (unless you have added the ExecuteInEditMode attribute to your script). What is this script supposed to do? where should it be used?
Your answer
Follow this Question
Related Questions
Camera switch between child back to main camera issue 2 Answers
cannot drag script to player.Guitext error,cannot drag player script to the player in hierarchy 2 Answers
How to access the properties of any created Game Object from another script Unity C # 2D 1 Answer
How to make that the camera will not go through the walls? 1 Answer
How to debug the object position in the grid of objects? 0 Answers