Unity マルチシーン シーンを動的に読み込む
こんにちは。ネノワヲンです。今回は
の続きになります。
初めに
実行形式では、初めから複数のシーンを読み込んでおくことができません。
そのため、ゲームが起動してから必要なシーンを読み込む必要があります。
動的にシーンを追加する
SceneManagerのLoadSceneは、シーンの読み込み方法を選択することができます。
// そのシーンだけ読み込む(いつもの) SceneManager.LoadScene(sceneIndex); // ↑と同じ SceneManager.LoadScene(sceneName, LoadSceneMode.Single); // LoadSceneModeをAdditiveにするとシーン追加になる SceneManager.LoadScene(sceneName, LoadSceneMode.Additive);
活用例
実際に私が使った手法です。
メインとなるシーンに、↑のようにシーン名を登録しておきます。
Startで、登録しておいたシーンを追加で読み込みます。
private async void Start() { // サブシーンを読み込む foreach (var sceneName in subSceneNames) { await SceneController.AddSceneAsync(sceneName); } // ステージを読み込む await SceneController.AddSceneAsync(GameParameterManager.Instance.StageSceneName); // ステージのマップを読み込む await SceneController.AddSceneAsync(StageSceneManager.Instance.StageMapSceneName); // シーン読み込み完了イベントを発行 OnLoadSceneCompleted.OnNext(Unit.Default); OnLoadSceneCompleted.Dispose(); }
SceneControllerは自作クラスです。詳しくは
をご覧ください。やっていることは動的にシーンを追加しているだけです。
今回は、ゲームに必要なUI、ステージマップ、ステージの敵を組み合わせています。
このようにすることで、違うステージを使いたいときには読み込むシーンを変えることで対応できます。