【Unity】シーン移動についてのまとめ
忘れる前に覚え書き
【Pauser.Pause.cs】はシーンをまたいで使えない。
ステージをクリアした時等でポーズを決めた時、画面暗転後必ず1フレでもいいから【Pauser.Resume.cs】を挟んで開放する必要がある
【流れ】
クリア→ポーズ→画面暗転→シーンをプリロード→ポーズ開放
古いシーンを破棄→ポーズ→その他処理→ポーズ開放→暗転解除
プリロードからのシーンの移動は
AsyncOperation async = SceneManager.LoadSceneAsync(i_name, LoadSceneMode.Additive);
yield return async;
これでは行けない。
×SceneManager.LoadScene(i_name);
【意味】
全部のシーンを破棄して新しいシーンを読み込む
これが正解
◯SceneManager.UnloadSceneAsync(i_name);
【意味】
古いシーンを破棄する
×の方も動くけど、シーン移動中にいろいろ処理を増やすと動かなくなる
下手に動くからずっとココで詰まってしまった。
◯の方じゃないと、ロードされた新しいシーンごと破棄しようとするので、古いステージにアクセスしようとしていろんなオブジェクトにnull判定放り込んだ挙げ句、【動きません】となる。
同じような事で困っている人のために慣れば幸いです。