環境
Unity 2019.3.7f1
はじめに
移動先のシーンが重くて遷移まで間が開いてしまう問題を解決するべく
シーンの事前ロードについて調べました。
方法
事前ロードし、ボタンを押したらシーン移動するコード
usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.SceneManagement;//追加publicclassSceneTest:MonoBehaviour{AsyncOperationa;//AsyncOperation型の変数aを宣言voidStart(){//SceneManager.LoadSceneAsync("GameScene")の返り値(型はAsyncOperation)を変数aに代入a=SceneManager.LoadSceneAsync("GameScene");//AsyncOperationの中の変数allowSceneActivationをfalseにする//これがtrueになるとシーン移動するa.allowSceneActivation=false;}//ボタンに割り当てpublicvoidChange_Scene_button(){//trueにしてシーン移動a.allowSceneActivation=true;}}
解説
SceneManager.LoadSceneAsync("シーン名");のみを使ってシーン移動する場合、
下図のことが処理されています。
allowSceneActivationの情報を下図のように一旦falseにしておくことで
シーン読み込み後のシーン移動をストップします。
おわりに
ちょっとややこしいですが、定型文として覚えておく程度で良いと思います。
動けばOKの精神♪