UnityのLoadSceneAsyncでの非同期処理
こんにちはー!!
Unity 5.3 から、Multi Scene Editing が追加されましたね。
そこで、シーンを読み込んでから、GameObject.Find
をする、
次のようなコードを動かしたのですが、うまくいきません。
TestGameObject は、追加するシーン Scene2 に入っているものとします。
1 | void LoadScene2() |
実行してみると、Null が返ってきます。
なぜ?
これは、Scene2 が読み込まれるまで待たないで、
GameObject.Find を呼び出してしまっているからです!
LoadSceneAsync を使おう!
お、LoadSceneAsync
とかいう、それらしい名前のがあるではないか。
そこで、LoadSceneAsync を使おうとしましたが、ハマりました。
C# の、async / await でするものだと間違えていて、
あれ?Unityの C# のバージョンじゃ、async とか使えなくねー・・
(使う方法もあります)
しかし、LoadSceneAsync の戻り値は、「UnityEngine.AsyncOperation」でした・・。
アシンクオペレーションってなんだっけ?(検索中)
そう、コルーチンを使うんだ。(`・ω・´)ゞ
1 | void LoadScene2() |
これでシーンが読み込まれるまで待機してくれるようになりました。