【Unity】异步加载场景代码实现

StartCoroutine(Loadlev());//开始协同程序
IEnumerator Loadlev()//协程
    {
 
        AsyncOperation operation = SceneManager.LoadSceneAsync(SceneManager.GetActiveScene().buildIndex+1);//携程函数=加载下一个场景的编号
        operation.allowSceneActivation = false;//进度条加载完后不进行操作
        while (!operation.isDone)//如果没有完成
        {
            slider.value = operation.progress;//将 operation(当前进度)给滑动条赋值
            text.text = operation.progress*100+"%";//显示百分比 
 
            if (operation.progress>=0.9f)//如果当加载进度大于等于0.9时执行
            {
                slider.value = 1;//进度条满
                text.text = "100%";//文本百分比为100
                operation.allowSceneActivation = true;//将进度条修改为加载完后进行跳转
            }
 
            yield return null;//暂缓一帧,在下一帧接着往下处理:注1、注2
            //yield return null(不管你return后面写的数字是多少执行的都一样)
        }
    }

异步加载需要先介 AsyncOperation 类

SceneManager.LoadSceneAsync(1, LoadSceneMode.Additive) 这个是异步加载的函数,其参数的用法跟同步加载的用法一致,然后,返回值 是一个 As yncOperation 类。

AsyncOperation 的用处:

  • AsyncOperation.isDone 这个是用来判断加载是否完成。这个属性是加载完并且跳转成功后才会变成完成
  • AsyncOperation.allowSceneActivation 这个是加载完后,是否允许跳转,当为false时,即使场景加载完了,也不会跳转
  • AsyncOperation.progress 这个时表示加载场景的进度。实际上的值时 0 - 0.9, 当值为0.9的时候,场景就已经加载完成了。

我们要异步加载场景的话,一般都是需要用协程一起工作。

猜你喜欢

转载自blog.csdn.net/m0_74022070/article/details/131722744