Kevin_meta 2022-10-18 13:15 采纳率: 11.1%
浏览 58

Unity 异步加载程序卡死

**异步加载时,加载到90%程序无响应,不是每次都会出现,有时一直不出现,一旦出现了可能好几次重启程序重启电脑都好不了。
代码如下:
**
using System.Collections;
using TMPro;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

/*
异步加载控制
*/
public class AsyncLoading_Ctl : MonoBehaviour
{
Image fillImage;
TextMeshProUGUI progressTxt;
AsyncOperation operation;

private void Start()
{
    fillImage = transform.Find("FillImage").GetComponent<Image>() ;
    progressTxt = transform.Find("ProgressTxt").GetComponent<TextMeshProUGUI>();
    StartCoroutine("LoadScene");
    //判断进入游戏
    AppConst.isLogin = true;
}

IEnumerator LoadScene()
{
    yield return new WaitForSeconds(2);
    operation = SceneManager.LoadSceneAsync("MainScene");
    //while (true)//偶尔卡死
    //{
    //    fillImage.fillAmount = operation.progress;
    //    progressTxt.text = operation.progress * 100 + "%";
    //    yield return null;
    //}
    while (!operation.isDone)//偶尔卡死
    {
        fillImage.fillAmount = operation.progress;
        progressTxt.text = operation.progress * 100 + "%";
        yield return null;
    }
}

}

  • 写回答

1条回答 默认 最新

  • 带酒书生 2022-10-18 14:58
    关注

    我建议你换个写法operation 设为false,当operation progress大于0.9时修改为true自动跳转。AsyncOperation 这个类本身就有点奇怪,往往0.9左右就完成了,不设为false就会自动跳转,但这时候的isDone还是false,应该是跟你的while循环冲突了?

    评论

报告相同问题?

问题事件

  • 创建了问题 10月18日

悬赏问题

  • ¥15 windows2019+nginx+php耗时久
  • ¥15 labelme打不开怎么办
  • ¥35 按照图片上的两个任务要求,用keil5写出运行代码,并在proteus上仿真成功,🙏
  • ¥15 免费的电脑视频剪辑类软件如何盈利
  • ¥30 MPI读入tif文件并将文件路径分配给各进程时遇到问题
  • ¥15 pycharm中导入模块出错
  • ¥20 Ros2 moveit2 Windows环境配置,有偿,价格可商议。
  • ¥15 有关“完美的代价”问题的代码漏洞
  • ¥15 请帮我看一下这个简易化学配平器的逻辑有什么问题吗?
  • ¥15 暴力法无法解出,可能要使用dp和数学知识