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