読者です 読者をやめる 読者になる 読者になる

いんでぃーづ

個人でゲーム開発してる上で吸収したモノたち紹介。UnityからGIMPまでなんでも。デザインとかゲーム論まで語っちゃうよ的なアレ。

MENU
{スポンサーリンク}

Unity : ロード済みシーンの切り替えを一定時間待つ

Unity C# Tips

普通にシーンをロードしてしまうと、完了した瞬間に新しいシーンに切り替わってしまいます。

たとえば、バックグランドでシーンをロードしつつ、少なくとも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です。

Amazon.co.jpアソシエイト