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()
可以防止切换场景时销毁异步加载新资源,并逐步销毁旧资源