Instantiateした時の実行順序

こんにちは〜

今日は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の変数をいじる際は、初期化が何処でされているか、気をつけてくださいね。

ではでは、またいつか〜





↓もしこの記事が参考になったら、下のいいねボタンを押していただけると非常に助かります!(ログイン不要)↓

コメントを残す

メールアドレスが公開されることはありません。