自分用Unityメモ:シーンロード時に処理を行う
新しくシーンを読み込んだ時に
何か処理をしたいときは、
OnLevelWasLoaded というAPIを使えばいいみたい。
……と、思っていたのですが、どうやらこれは旧型式で
5.4あたりから非推奨になったみたいです。
(しかも、そのうち消すから使うなって書いてあるよ。あるいは書いてあった。)
じゃあどうするかというと、
SceneManagerのデリゲートを使えばいいみたい。
(※デリゲートはメソッドの入る変数みたいなものです(語弊あり))
・activeSceneChanged //アクティブのシーンが切り替わったときに呼ばれる
・sceneLoaded //シーンがロードされたときに呼ばれる
・sceneUnloaded //シーンがアンロードされたときに呼ばれる
使い方の例としては……
void OnSceneLoaded(Scene loaded) { Debug.Log(loaded + "がロードされたよ"); }
こんな感じのメソッドを用意しておいて、
(メソッドの名前に決まりはないよ)
マネージャーのAwake()、Start()あたりに
SceneManager.sceneLoaded += OnSceneLoaded;
とか記述しておいてあげればロード時に処理をしてくれるはず。
今のゲームで使っているのは
sceneUnloadedの方で、シーン切り替え時に
使い終わったオブジェクトのプールを削除したりしてます。