本範例檔示範一個如何製作兩個場景間過場的Loading 進度條功能 (包跨動畫)。
線上玩
專案檔下載
【前言】
假設我們現在正開啟著 Scene_A,並透過下面程式碼來切換至 Scene_B 場景:
SceneManager.LoadSceneAsync(“Scene_B”)
那Unity實際上的運作將會是如下
從上述步驟可發現 Unity 是等 Scene_B 載入完成後才將 Scene_A 關閉。
這樣的過程會造成遊戲記憶體出現 Scene_A +Scene_B 的高使用量。
假設這兩個場景都需要 10mb 的記憶體,
那這個場景切換的過程將會出現需要 20mb 記憶體的情況發生。
【改進方式】
為了避免不必要的記憶體突增狀況發生,
本範例檔案則是新增一個名叫 Empty.unity 的"空場景檔"作為過度使用。
這個空場景檔實際作用的流程如下:
線上玩
專案檔下載
【前言】
假設我們現在正開啟著 Scene_A,並透過下面程式碼來切換至 Scene_B 場景:
SceneManager.LoadSceneAsync(“Scene_B”)
那Unity實際上的運作將會是如下
- Hierarchy 中存著 Scene_A 場景,開始載入Scene_B
- 載入 Scene_B 完成後將 Scene_B 開啟
- 將 Scene_A 關閉。
從上述步驟可發現 Unity 是等 Scene_B 載入完成後才將 Scene_A 關閉。
這樣的過程會造成遊戲記憶體出現 Scene_A +Scene_B 的高使用量。
假設這兩個場景都需要 10mb 的記憶體,
那這個場景切換的過程將會出現需要 20mb 記憶體的情況發生。
【改進方式】
為了避免不必要的記憶體突增狀況發生,
本範例檔案則是新增一個名叫 Empty.unity 的"空場景檔"作為過度使用。
這個空場景檔實際作用的流程如下:
- Hierarchy 中存著 Scene_A 場景,開始載入Empty 場景
- 載入 Empty 完成後將 Empty 開啟
- 將 Scene_A 關閉,並且開始載入 Scene_B
- 載入 Scene_B 完成後將 Scene_B 開啟
- 將 Empty 關閉。
總之我們從Scene_A直接載入Scene_B,
而是從Scene_A載入Empty,再從Empty載入Scene_B。
這樣的好處是什麼呢?
假設Scene_A跟Scene_B都是10mb、Empty只有1mb的話,
我們在轉換場景的過程中,最多也就需要 11mb 而已。
【本範例檔的Build Settings】
【GameManager】
其實本範例也參考了官方範例,如何撰寫一個GameManagrer
https://unity3d.com/learn/tutorials/projects/2d-roguelike-tutorial/writing-game-manager
哇哦这个很有用 谢谢!
回覆刪除謝謝你的回應!
刪除