シーン切り替えの時に加算シーンを使ったことがなかったので使い方を調べてました。
ついでにシーン切り替え関連についてちょっと調べたことをまとめておきます。
LoadSceneでシーン切り替え
1.LoadSceneMode.Single
いつもはこっちをよく使っています。
LoadSceneModeを省略するとデフォルトの「Single」の動きになります。
SceneManager.LoadScene("シーン名");
// ↓と同じ。シーン名の代わりにインデックス番号で指定も可能
// SceneManager.LoadScene("シーン名", LoadSceneMode.Single);
インデックス番号はビルド設定の右端の番号です。

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