Unity异步加载场景卡90%,但是场景已加载完成

在使用Unity的AsyncOperation切换场景时遇到问题,场景实际已加载完成但显示卡在90%。原因可能是从被销毁对象的脚本中启动的协程在加载中途被终止,导致加载进度显示异常。解决方法是检查并确保协程的正确执行流程。
摘要由CSDN通过智能技术生成

用一个下面这样的函数切换一个小场景,总是卡90%,但是场景实际上已经加载完成。

    public IEnumerator SwitchSceneAsync(int sceneIndex=0)
    {
        AsyncOperation operation = SceneManager.LoadSceneAsync(sceneIndex);
        operation.allowSceneActivation = false;
        while (operation.progress<0.9f)
        {
            loadingCanvas.transform.GetChild(0).GetComponentInChildren<TextMeshProUGUI>().text =  string.Format("{0:P0}", operation.progress);
            yield return new WaitForEndOfFrame();
        }
        loadingCanvas.transform.GetChild(0).GetComponentInChildren<TextMeshProUGUI>().text = "100%";
        yield return new WaitForEndOfFrame();
        operation.allowSceneActivation = true;
        yield return new WaitUntil(()=>operation.isDone);
        loadingCanvas.transform.GetComponent<RectMask2D>().enabled = true;
        Debug.Log("场景加载完成");
        yield break;
    }

后来发现是因为在原场景中的被Destory物体的脚本中来StartCoroutine,导致加载到一半协程被干掉了....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值