欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Unity 异步加载场景

程序员文章站 2022-04-03 15:30:17
...
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;
using Babybus;

public class LoadingManager : MonoBehaviour
{
    public static int               nextSceneId = -1;

    public int                      sceneId = -1;

    public GameObject               loadingSceneCanvas;

    private IEnumerator Start()
    {
        //yield return new WaitForSeconds(1);
        BabySystem.ShowAdView();
        yield return null;


        sceneId = sceneId < 0 ? nextSceneId : sceneId;
        if (sceneId == -1)
            sceneId = 0;

        var ao = SceneManager.LoadSceneAsync(sceneId);
        ao.allowSceneActivation = false;

        while (ao.progress < 0.9f)
        {
            yield return null;
        }
        yield return null;

        ao.allowSceneActivation = true;
    }

}

大概意思是这样,如果allowSceneActivation 为false , 进度条最终将停在0.9,然后IsDone 一直保存false,直到allowSceneActivation 被设置为true,可以**新场景。一般和LoadLevelAsync 与 LoadLevelAdditiveAsync组合使用。

注意加入上面那个0.9 改成大于0.9它就一直在while这个循环内,也就是不会跳转。

https://docs.unity3d.com/ScriptReference/AsyncOperation.html

相关标签: Unity 异步加载