Unity中的场景切换

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

你可能感兴趣的:(游戏,异步,unity,yield,场景)