【Unity】シーン切り替えについてのまとめ

Unity-シーン切り替え方法まとめ Unity
スポンサーリンク

シーン切り替えの時に加算シーンを使ったことがなかったので使い方を調べてました。
ついでにシーン切り替え関連についてちょっと調べたことをまとめておきます。

LoadSceneでシーン切り替え

1.LoadSceneMode.Single

いつもはこっちをよく使っています。
LoadSceneModeを省略するとデフォルトの「Single」の動きになります。

SceneManager.LoadScene("シーン名");
// ↓と同じ。シーン名の代わりにインデックス番号で指定も可能
// SceneManager.LoadScene("シーン名", LoadSceneMode.Single);

インデックス番号はビルド設定の右端の番号です。

BuildSettingsの画像
ビルド設定にシーンを追加していないとロード時にエラーになります

2.LoadSceneMode.Additive

LoadSceneModeを「Additive」にするとシーンを追加することができます。
これが加算シーンです。
Singleが「現在ロードされているシーンを全て破棄して、新しいシーンをロードする」のに対し、
Additiveは「現在ロードされているシーンはそのままで、新しいシーンを追加する」という動きになります。

どういう場合にAdditiveを使うか

UIを別々のシーンで作っておいて、UI表示タイミングでロード・アンロードするという使い方ができそうです。
例えば、ランキング表示をこの方法で実装しているゲームを見かけたことがあります。
あとはマネージャーシーンのようなゲーム全体を管理する専用シーンを使う場合もAdditiveでロードする必要がありそうですね。

LoadSceneAsyncでシーン切り替え

Unityのドキュメントに以下のことが書かれていました。

Note: In most cases, to avoid pauses or performance hiccups while loading, you should use the asynchronous version of this command which is: LoadSceneAsync.

SceneManager.LoadScene

LoadSceneAsyncは簡単に言うとLoadSceneの非同期版のことです。
LoadSceneでシーンを切り替えると、ロードで一瞬ゲームが止まってしまう時間が発生してしまいます。
シーンが重くなってくるとこのロード時間が長くなってしまうので、それを回避するためにLoadSceneAsyncが使えそうです。
こちらもLoadSceneModeが指定できます。

シーンのアンロード

LoadSceneMode.Additiveで複数のシーンを読み込んだ後に不要なシーンがあった場合、手動でアンロードする必要があります。
アンロードにはUnloadSceneAsyncを使います。

結局どれ使えばいい?

分かりません()
調べてみてわかったのがどうやらシーンの管理って結構人によって違うみたいで、毎回単一シーンで全部完結させる人もいれば複数シーン使う人もいたり色々あります。
自分の作ってるゲームに一番合う方法をその都度取るのが良さそうです。

コメント

タイトルとURLをコピーしました