普通にシーンをロードしてしまうと、完了した瞬間に新しいシーンに切り替わってしまいます。
たとえば、バックグランドでシーンをロードしつつ、少なくとも1秒以上はなにかしら画像を表示したい、というとき
今回紹介するテクニックを使ってみてください。
シーンの自動アクティベーションを無効にする
単純にシーンをロードするときは SceneManager.LoadScene を使いますが、今回はバックグランドでロードするためSceneManager.LoadSceneAsyncを使います。
このメソッドにはAsyncOperation型の戻り値があるのですが、これのallowSceneActivationプロパティをfalseにすることで、ロード後に自動でシーンが切り替わってしまうのを防げます。
allowSceneActivation = true に戻せば、ロードが終わっていれば自動でシーンが変わります。
以下、少なくとも1秒だけ待ってシーンを切り替えるサンプルです。
// 先頭で宣言する using UnityEngine.SceneManagement;
IEnumerator LoadSceneAndWait() { float start = Time.realtimeSinceStartup; AsyncOperation ope = SceneManager.LoadSceneAsync("NewScene"); ope.allowSceneActivation = false; while (Time.realtimeSinceStartup - start < 1) { yield return null; } ope.allowSceneActivation = true; }
これをコルーチンとして呼出せばOKです。