(:3[kanのメモ帳]

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

(:3[kanのメモ帳]

ビルド(Scenes in Build)に含まれていないシーンをロードするEditorSceneManager.LoadSceneInPlayMode【Unity】【エディタ拡張】


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


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


はじめに

今回はタイトル通り、ビルド(Scenes in Build)に含まれていないシーンをロードする方法のご紹介です。

もちろんビルドに含まれていないシーンなので、実機上ではなくエディタ拡張の話になります。

なお、Unity2018.3以降の機能なのであしからず。


ちなみに、これを使ったエディタ拡張である

プロジェクト内にある全シーンを表示し、任意のシーンの再生や読み込み、選択が簡単に出来る拡張機能

を以前紹介していたりします。


f:id:kan_kikuchi:20190225114023g:plain:w700



EditorSceneManager

ゲーム中にシーンのロードを行う時は

UnityEngine.SceneManagement.SceneManager



LoadScene(Async)を使いますが、

SceneManager.LoadScene("Game");


これはビルド(Scenes in Build)に含まれてるシーンしかロード出来ません。

f:id:kan_kikuchi:20190307140843j:plain


なので、ビルドに含まれていないシーンをロードしたい時は

UnityEditor.SceneManagement.EditorSceneManager


LoadScene(Async)InPlayModeを使います。


ただし、SceneManager.LoadSceneとは違い、

Assetsからのパス(拡張子付き)でシーンファイルを指定する必要があるのと、

どうロードするかのパラメータLoadSceneParametersが必須という点には注意が必要です。

var scenePath = "Assets/Scenes/Demo.asset";
var parameter = new LoadSceneParameters(LoadSceneMode.Single);
EditorSceneManager.LoadSceneInPlayMode(scenePath, parameter);


なお、ビルドに含まれているシーンであっても、もちろんロード可能です。


f:id:kan_kikuchi:20190307141345j:plain