こんにちは〜
今日は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の変数をいじる際は、初期化が何処でされているか、気をつけてくださいね。
ではでは、またいつか〜
↓もしこの記事が参考になったら、下のいいねボタンを押していただけると非常に助かります!(ログイン不要)↓