いんでぃーづ

ゲームいろいろ、いろいろ自由

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

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

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


“Unity” and Unity logos are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere, and are used under license.


免責事項

当サイトの広告バナー、リンクによって提供される情報、サービス内容について、当サイトは一切の責任を負いません。

また、当サイトの情報を元にユーザ様が不利益を被った場合にも、当サイトは一切の責任を負いません。

すべて自己責任でお願いします。