MRが楽しい

MRやVRについて学習したことを書き残す

Unityで読み込み中の全てのシーンの参照を取得する

本日は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}");
        }
    }
}

適当なオブジェクトにスクリプトを設定し、シーンを再生すると以下の通り確認できました。