シーンを追加するたびに
LoadScene("シーン名")を書くのが
めんどくさかったので
シーンを追加しても
手を入れずに済むようにしてみました。
自動化スクリプト
using System; using UnityEngine; using UnityEngine.SceneManagement; class SceneTransitioner : MonoBehaviour { private readonly int TitleSceneIndex = 0; private int SceneCount { get; set; } private void Start() { SceneCount = SceneManager.sceneCountInBuildSettings; } public void LoadScene() { var nowSceneIndex = SceneManager.GetActiveScene().buildIndex; //最後のシーンだったら最初に戻る if (nowSceneIndex + 1 == SceneCount) { SceneManager.LoadScene(TitleSceneIndex); } //それ以外は次のシーンへ else { SceneManager.LoadScene(nowSceneIndex + 1); } } }
これでこのクラスのLoadSceneを呼び出せば
次のシーンを呼び出すことができます。
Startメソッドでやってること
sceneCountInBuildSettings で
ビルドに設定されているシーンの数を取得します。
この場合だと5を取得します。
LoadSceneメソッドでやっていること
初めに現在のシーンのbuildIndexを取得しています。
buildIndexは先程の画像の右側の連番です。
連番となっているので現在のbuildIndexに
1を足せば次のシーンを指すことができます。
この数値をSceneManager.LoadSceneの
引数に渡すことによって
次のシーンに行くようにしています。
実行結果
Buttonを押すと今回作ったスクリプトの
LoadSceneが呼び出されます。
5つのシーンの遷移を実行してみます。
最初のシーンから最後のシーンまで
遷移することができるようになりました。
これでシーンが追加されても
BuildSettingにシーンを追加するだけで
作業は終わりです。
LoadScene("新しいシーン名")をどこかに
書く作業が無くなったので
楽になりました。