渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きくなれるように。。。 ※所属団体とは一切関係がありません

EditorSceneManagerのGetSceneManagerSetup関数挙動


f:id:esakun:20150730215258g:plain

GetSceneManagerSetup関数は公式でこのように説明されています。

SceneManager の現在の SceneSetUp を返します。

もう少し噛み砕くと、ロードされているシーンの状態オブジェクト(SceneSetupクラス)の配列を返却します。

f:id:esakun:20170808182218p:plain

例えば上図のようにTestScene1TestScene2がロードされている状態でGetSceneManagerSetupを実行してみます。

var setups = EditorSceneManager.GetSceneManagerSetup ();
Debug.Log ("要素数 : " + setups.Length);
foreach (var s in setups) {
    Debug.Log (s.isActive + " - " + s.isLoaded + " - " + s.path);
}

こんな感じで出力されます。

要素数 : 2
False - True - Assets/TestScene2.unity
True - True - Assets/TestScene1.unity

f:id:esakun:20170808184123g:plain

このようにTestScene1をUnload Sceneした状態で再度先のコードを実行します。

2
True / True / Assets/TestScene2.unity
False / False / Assets/TestScene1.unity

このようにTestScene1isLoadedがfalseになります。

まとめ

  • ヒエラルキーに存在しているとSetupSceneにカウントされる
  • Load or Unload状態の有無でSetupSceneのisLoadedが変化する
  • GetSceneManagerSetupはエディットモード中しか動かない

Unity5.3から導入されているマルチシーンエディットを調べるついでにこの記事を書いています。
本格的に使ったことはないですが、マルチシーンの実績もちらほらネット上には出てきているので(これとか)、運用で便利になりそうであれば積極的に使ってみたいところです。もう少し調べてみます。