本日はUnityの小ネタ枠です。
Unityで読み込み中の全てのシーンの参照を取得する方法についてです。
全てのシーンの参照を取得する
読み込み中のシーンの参照を全て取得するにはSceneManager.sceneCount関数とSceneManager.GetSceneAt関数を利用します。
for (int i = 0; i < UnityEngine.SceneManagement.SceneManager.sceneCount; i++) { var scene = UnityEngine.SceneManagement.SceneManager.GetSceneAt(i); // ...シーンに対する処理 }
SceneManager.sceneCountは現在ロード中のシーンの数を返します。
docs.unity3d.com
SceneManager.GetSceneAtはインデックスを指定して現在ロード中のシーンの参照を取得します。
docs.unity3d.com
サンプルスクリプト
再生時に現在読み込み中の全てのシーンの参照を取得し、名前、インデックス、パスをログ出力する以下のサンプルスクリプトを作成しました。
・SceneTest.cs
using UnityEngine; public class SceneTest : MonoBehaviour { void Start() { // 現在のシーン数を取得する var sceneCount = UnityEngine.SceneManagement.SceneManager.sceneCount; // 読み込まれている全てのシーンを取得して情報を表示する for (int i = 0; i < sceneCount; i++) { var scene = UnityEngine.SceneManagement.SceneManager.GetSceneAt(i); Debug.Log($"シーン名:{scene.name}, シーンインデックス:{scene.buildIndex}, シーンパス:{scene.path}"); } } }
適当なオブジェクトにスクリプトを設定し、シーンを再生すると以下の通り確認できました。