👻

エディタで再生中にBuildSettingsに含まれないシーンを読み込む

2021/03/28に公開

通常、Unityでシーンを読み込むには、BuildSettingsにシーンを追加する必要がありますが、テスト用のシーンなど、エディタのみで再生したいシーンはBuildSettingsに含みたくない場合があります。そのような時は、EditorSceneManager.LoadSceneInPlayModeを使います。

public void LoadScene(string sceneName)
{
#if UNITY_EDITOR
    // シーン名でシーンのGUIDを検索する。
    var guid = AssetDatabase.FindAssets($"{sceneName} t:scene")[0];
    // GUIDからパスを調べる。
    var path = AssetDatabase.GUIDToAssetPath(guid);
    Debug.Log(path); // 例: Assets/FooScene.unity
    // パスを指定してシーンを読み込む。
    EditorSceneManager.LoadSceneInPlayMode(path, new  LoadSceneParameters(LoadSceneMode.Single));
#else
    SceneManager.LoadScene(sceneName);
#endif
}

LoadSceneModeで、既存のシーンを破棄するか、新たなシーンを追加で読み込むか選択できます。

LoadSceneMode 機能
Single 既存のシーンを破棄してシーンを読み込む
Additive 現在のシーンに追加でシーンを読み込む

LoadSceneAsyncInPlayModeという非同期読み込み用のメソッドもあります。

Discussion