こんにちは〜
今日はInstantiateでオブジェクトを生成した際のAwake,Startの呼び出される順番が気になったのでメモです。
調べたらすぐに出てきそうですけどね(笑)
今回用意するのは次の2つのコードですね。
using System.Collections;
using UnityEngine;
public class Script1 : MonoBehaviour {
//生成するオブジェクト。
public GameObject obj;
void Start(){
Instantiate(obj);
Debug.Log("Script1:Start");
}
}
これと
using System.Collections;
using UnityEngine;
public class Script2 : MonoBehaviour {
void Awake(){
Debug.Log("Script2:Awake");
}
void Start(){
Debug.Log("Script2:Start");
}
}
これですね。
Script1をカメラなどの適当なオブジェクトにつけて、Script2の方は空のGameObjectにつけてPrefab化させます。
この空オブジェクトをScript1のobjにセットして準備完了です。
あとは実行するだけ!
結果は、
Script2:Awake
Script1:Start
Script2:Start
でした。
Awakeは引数なしのコンストラクタ的な立ち位置なんですかね?
Debug.Log(“Script1:Start”); の位置でScript2の変数をいじる際は、初期化が何処でされているか、気をつけてくださいね。
ではでは、またいつか〜
↓もしこの記事が参考になったら、下のいいねボタンを押していただけると非常に助かります!(ログイン不要)↓