プレイモード時に最初に開くシーンを指定する
Unity
上でゲームを作っていると、タイトル画面とゲーム画面などでシーンを分けることがあります。
開発が進んでくるとゲーム全体の初期化の都合でタイトル画面用シーンから起動しないといけなくなってくるケースがあります。
その場合、ゲーム画面用シーンを編集した後いちいちタイトル画面用シーンを開き直して実行する手間が生じます。
そんなときに役に立つのが、EditorSceneManager.playModeStartScene
です。
シーンを設定するためのスクリプトを用意する
そのままでは使えないので、EditorSceneManager.playModeStartScene
にシーンアセットを設定するためのスクリプトを作成します。
Editor
フォルダを作って以下のスクリプトを配置します。
using UnityEditor;
using UnityEditor.SceneManagement;
public static class PlayModeStartSceneMenu
{
private const string SetMenuPath = "Assets/PlayModeStartScene/Set";
private const string ClearMenuPath = "Assets/PlayModeStartScene/Clear";
/// <summary>
/// スタートシーンを設定する
/// </summary>
[MenuItem(SetMenuPath, priority = 0)]
public static void SetPlayModeStartScene()
{
EditorSceneManager.playModeStartScene = Selection.activeObject as SceneAsset;
}
[MenuItem(SetMenuPath, true)]
public static bool PlayModeStartSceneValidate()
{
// シーンが設定されていたらチェックを入れる
Menu.SetChecked(SetMenuPath, EditorSceneManager.playModeStartScene != null);
// シーンアセットを選択している場合、選択中のシーンを設定可能にする
return Selection.count == 1 && Selection.activeObject is SceneAsset;
}
/// <summary>
/// スタートシーンをクリアする
/// </summary>
[MenuItem(ClearMenuPath, priority = 1)]
public static void ClearPlayModeStartScene()
{
EditorSceneManager.playModeStartScene = null;
}
}
スクリプトを追加した後、
ProjectView
上でシーンアセットを選択した状態で右クリックメニューを開くと以下のメニューが追加されています。
Set
を選択すると、EditorSceneManager.playModeStartScene
にシーンが設定されます。
この状態で実行すると指定したシーンから実行されるようになります。
GameScene
を開いている状態でプレイモードに入ると、TitleScene
から始まり、
終了するとGameScene
に戻っているのが確認できると思います。
まとめ
プレイモードに入る際に開かれるシーンを指定する方法を解説しました。
Unity
で開発を進める上で、特定のシーンから起動する必要がある場合に、毎回手動でシーンを切り替える手間を省くためにEditorSceneManager.playModeStartScene
を利用することができます。
一つ気をつける点は、UnityEditor
を終了するとEditorSceneManager.playModeStartScene
に登録したシーンは解除される点です。
自分でスクリプトが書けるなら、登録したシーンを再現できるようにするとか、
Build Settings
のScenes In Build
の先頭のシーンが自動で設定されるようにするのもいいかもしれません。