(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]

エディタ上でもScenes in Buildの一番上に登録されているシーンから再生を開始する(再生が終わったら再生前に開いていたシーンに戻る)【Unity】【エディタ拡張】


このエントリーをはてなブックマークに追加


この記事でのバージョン
Unity 2018.2.17f1


はじめに

Unityのエディタ上で再生ボタンを押すと、当たり前ですが今開いているシーンが再生されます。


今回はエディタ上でもScenes in Buildの一番上に設定されているシーン、

つまり実機上で最初に再生されるシーンから再生を開始する方法の紹介です。

(以下の場合だとLoadシーンから毎回再生が始まる)


f:id:kan_kikuchi:20190205090722j:plain


イメージとしては以下のような感じ。

なお、再生を終了すると再生前に開いていたシーンに戻ります。

f:id:kan_kikuchi:20190205093552g:plain:w700


ちなみに以前にも似たような感じで、最初のシーンを固定するエディタ拡張を作ってました。



常に最初のシーンを固定する場合は前ので良いんですが、

適宜切り替えたい場合は今回の方法の方が楽だと思います。


EditorPlayer

さっそくコードです!

詳細は省きますが、EditorBuildSettings.scenes[0]を使ってシーンを取得し、

EditorSceneManager.playModeStartSceneにそれを登録することで最初に再生されるようにしています。



これをEditorフォルダに入れれば、


f:id:kan_kikuchi:20190205092650j:plain


上部のメニューにTools/PlayFromFirstSceneが表示されるようになり、

これを押すと、Scenes in Buildの一番上に登録されているシーンから再生を開始します。

なお、普通の再生ボタンを押せば、通常通りに開いているシーンから再生を開始します。


f:id:kan_kikuchi:20190205093552g:plain:w700


ちなみに、シーンが1つも登録されていない場合はエラーを出すようにしています。


f:id:kan_kikuchi:20190205092909j:plain


また、以下のような感じで好きなシーンから始められるメニューを追加する事も簡単に出来ます。

[MenuItem("Tools/PlayFromTitleScene")]
private static void PlayFromTitleScene() {
  //最初に再生したいシーンがある場所のパスを拡張子付きで指定(Scenes in Buildに含まれていなくてもOK)
  Play("Assets/Scenes/Title.unity");
}

f:id:kan_kikuchi:20190205101413j:plain


余談ですが、ショートカットを付ける事でさらなる効率化が図れるかもしれません。

/// <summary>
/// Scenes in Buildの一番上に登録されているシーンから再生を開始する(Shift + Alt + sキーを押しても実行される)
/// </summary>
[MenuItem("Tools/PlayFromFirstScene #&s+")]
private static void PlayFromFirstScene() {

f:id:kan_kikuchi:20190205101829j:plain