みつろぐ

やれることはやってみる

【Unity】編集しているシーンとは別のシーンから再生し、終了時に元のシーンへ戻る方法

Unityでゲーム開始時のシーンとは別のシーンで作業をしている時、デバッグのためにシーンを遷移しなければならないのが億劫だったのでエディタ拡張を用意しました。

下記スクリプトを適当なAssets/Editor以下に置くと使えるようになります。

[InitializeOnLoad]
public class StartGame : ScriptableObject
{
    static StartGame()
    {
        EditorApplication.playModeStateChanged += (a) => {
            if (EditorApplication.isPlayingOrWillChangePlaymode && ! EditorApplication.isPlaying) {
                EditorPrefs.SetString("editScenePath", EditorSceneManager.GetActiveScene().path);
                EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo();
                EditorSceneManager.OpenScene ("Assets/Scenes/Main.unity");
            } else if (!EditorApplication.isPlayingOrWillChangePlaymode && ! EditorApplication.isPlaying) {
                EditorSceneManager.OpenScene(EditorPrefs.GetString("editScenePath"));
            }
        };
    }
}

やってることとしてはEditorApplication.playModeStateChangedでPlayMode(ゲームの再生/終了)が切り替わったときにシーンの切り替えをやっているだけです。