Unityでシーンが増えてくると、Game ViewでLoadScene()がうまく動かないことがある。後からシーン名を変えたり、Build Settingsでシーンの並び順を変えたときに問題が起こりやすい。(確認したUnityのバージョンは2018.1.4f1)
引数は番号と名称のどっち?
シーン遷移に使うメソッドはSceneManager.LoadScene()。これに与える引数は、遷移先シーンのインデックス番号と、シーン名称文字列の二通りが使える。
あとからBuild Settingsでシーンの並び順を変更すると、引数のインデックス番号も変える必要がある。シーン名を変更しても修正は必要なので、どちらがよいともいえない。
一度名づけたシーン名を変える可能性が低いなら、引数は文字列で与えた方が、コードはわかりやすくなると思う。
Game Viewの怪現象
開発中にシーンの数が増えてきたので、Build Settingsで並び順を変えて整理してみた。するとGame Viewで正しくシーン遷移できない問題が生じた。
プレビュー操作中に以下のようなエラーが出て、意図しないシーンに飛ばされてしまう。
Scene ‘Test’ couldn’t be loaded because it has not been added to the build settings or the AssetBundle has not been loaded.
![]()
何度も確認したが、LoadScene()に与えたシーン名は間違っていない。Build Settingに登録したインデックス番号で指定しても、同じエラーが出てしまう。
さらに不可解なことに、上記のエラーが出ずに変なシーンに飛んでしまうこともある。ここまで来ると、さすがにUnityのバグっぽい。
Build Settingsが地雷
一方、プロジェクトをビルドして実行すると、このようなシーン遷移のトラブルは起こらない。
最終的なプロダクトに影響が出なければ問題ない。しかし、原因不明のエラーを抱えたままなのは精神衛生上よくない。そこそこ大きなプロジェクトなので、開発中にプレビューするため毎回ビルドするのは時間の無駄だ。
ダミーのシーンを作っていろいろ試した結果、原因はBuild Settings内でシーンの順番を入れ替えたことだとわかった。ダイアログ画面上でシーンをドラッグドロップすると再生順序を変えられるが、この操作はビルド前のプロジェクトに正しく反映されない。

Build SettingsからDeleteキーで全シーンをいったん削除して、再びAdd Open Scenesボタンでひとつずつ登録し直したら問題は解決した。Game Viewでも正しく動く。

作業中、Deletedとグレーアウトされた空行も、マウス操作で上下に移動できてしまう。不気味なUIなので、うかつに触れない方がよさそうだ。
Unityを再起動しても直る
わざわざシーン登録をやり直さなくても、現在のプロジェクトを保存してUnity自体を再起動したら直るとわかった。まるで昔のWindowsのようだが、「困ったら再起動」という経験則は今でも有効らしい。
Unityでは他にも「インスペクター上で行った変更がシーンに反映されない」とか、不可解な挙動に悩まされることがある。原因を追究する前に、とりあえず再起動すると直るパターンが多いように感じる。