Unity中的場景切換
- 與電影類似,一個遊戲往往需要多個場景。而如果場景中資源較少,那麼可以很快的完成切換,如果較多的話,可能需要十幾秒時間。在這段時間內播放加載動畫等等,可以減少玩家的不耐煩。
同步切換場景
Application.LoadLevel()
Application.LoadLevelAdditive()
加載完成後保留舊場景中資源
異步切換場景
Application.LoadLevelAsync()
異步加載場景,加載過程中當前場景不會卡死。返回值包含加載進度-
代碼示例:
public class test : MonoBehaviour {
private AsyncOperation async; void Start () { Debug.Log(Time.time); StartCoroutine("Switch"); } void Update () { Debug.Log(async.progress); } IEnumerator Switch() { async = Application.LoadLevelAsync("LoadingScene"); yield return async; } }
-
Application.LoadLevelAdditiveAsync
加載新場景完成後不釋放舊資源 - 通常做場景切換時,首先切換到一個較小的loading動畫場景,之後異步加載新場景
無縫場景切換
- 場景管理對象需要一直存在:
Object.DontDestroyOnLoad()
可以防止切換場景時銷燬 - 異步加載新資源,並逐步銷燬舊資源