关于UniTask在Webgl上若出现弹窗报错,可以参考一下的解决方案修改,在方法后加上SuppressCancellationThrow()或者场景跳转时加上异步取消等操作,大部分报错都能解决,若出现无法解决的新错误,可以问AI解决或者留言讨论。
详细报错以及解决方案可以参加该文章。
在 WebGL 平台上点击“取消”按钮报错,这其实是 典型的 UniTask + CancellationToken 在 WebGL 中被立即取消导致的异常,尤其是 WebGL 不支持多线程和部分 CancellationToken 异步操作。
🔹 问题原因
cancel.GetComponent<Button>().onClick.AddListener(() =>
{
UniTaskManager.CancelAllIdTask();
SceneManager.LoadSceneAsync("1");
});
-
🔹 问题分析
-
WebGL 特性:
-
WebGL 没有多线程,很多异步操作都是在主线程执行的。
-
UniTaskManager.CancelAllIdTask()会触发正在运行的UniTask里的CancellationToken。 -
被取消的任务如果没有
try-catch或SuppressCancellationThrow(),会抛OperationCanceledException,在 WebGL 上会直接在控制台显示错误。 -
WebGL 不能直接 catch Unity 的 Task/Async 异常,导致你看到网页
-

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



