Unity シーン読み込み時に処理を実行したい場合

シーン読み込み時に処理を実行したい場合、通常ならばStart()内に書いても問題ないが、Start()はインスタンス化したときにしかコールされないので、DontDestroyOnLoadでオブジェクトを持ち越してるときは弊害が出る。そういうときは

SceneManager.sceneLoaded 

を使う。

SceneManagement.SceneManager.sceneLoaded - Unity スクリプトリファレンス

ちなみに、よくみれば分かるが、リファレンスのOnSceneLoadedはコールバックではなく、デリゲートであるsceneLoadedに入れるためのメソッドなので、以下のようにメソッドを代入する必要がある。

void OnEnable()
    {
        Debug.Log("OnEnable called");
        SceneManager.sceneLoaded += OnSceneLoaded;
    }    

 

 

私は最初、コールバックと勘違いして何故実行されないのかと詰まった。