Jbutaのブログ

腹だけでた豚のブログ

【Unity】シーン移動についてのまとめ

忘れる前に覚え書き

sleepnel.hatenablog.com

【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判定放り込んだ挙げ句、【動きません】となる。

 

同じような事で困っている人のために慣れば幸いです。