EditorでPlaymode移行時にシーン遷移する

2020/10/09
Unity
Editor

UnityEditorで再生ボタンを押したときにシーン遷移する実装。 主にデバッグ時にBootシーンを通すために使う。

環境

  • Unity 2020.1.3f1

実装

using UnityEditor;
using UnityEngine;
using UnityEngine.SceneManagement;

/// <summary>
/// EditorでPlaymodeに移行したときBootSceneに遷移する
/// </summary>
[InitializeOnLoad]
public static class PlayModeToBootScene
{
    static PlayModeToBootScene()
    {
        Debug.Log("Setup PlayModeToBootScene");
        EditorApplication.playModeStateChanged += TransitionToBootScene;
    }

    /// <summary>
    /// Playmode移行時BootSceneに遷移する
    /// </summary>
    /// <param name="state"></param>
    private static void TransitionToBootScene(PlayModeStateChange state)
    {
        const string SceneName = "BootScene";

        if(state == PlayModeStateChange.EnteredPlayMode)
        {
            if(SceneManager.GetActiveScene().name != SceneName)
            {
                SceneManager.LoadScene(SceneName);
            }
        }
    }
}

InitializeOnLoadAttributeはstaticコンストラクタを持つクラスに付けることでEditor起動時に確実に呼び出される。

シーン遷移は現在のシーンロード後に呼び出されるので、現在のシーンの起動時処理は実行されてしまうことに留意する。 シーンが独立して動作するように設計しようね。

© 2019-2022 hassakulab.com, built with Gatsby