你们是用3.x版本运行的吗
3.8.3版本
我3.72版本 从顺序来看 确实很奇怪 你可以跟一下断点 看注册的定时器怎么执行顺序错了
懂了!,但是为什么要依赖定时器顺序啊
只是我以为是3x版本都出问题,没想到是3.8.3版本的问题,是我描述的不够详细
定位到问题了,两重数组,数组移动下标出错,你现在要解决的这个问题的话,可以重写unscheduleForTimer函数,让他延迟一下
let afterUpdateFuc = () => {
for (let one of cacheList) {
unscheduleForTimer.apply(one[0], one[1])}
cacheList.length =0
}
director.on(Director.EVENT_AFTER_UPDATE, afterUpdateFuc)
let cacheList: any[] = []
//@ts-ignore
let unscheduleForTimer: Function = Scheduler.prototype.unscheduleForTimer
//@ts-ignore
Scheduler.prototype.unscheduleForTimer = function (…args) {
cacheList.push([this, args])
}
在这个 PR 修复了:fix logic error when removing an array element in loop by minggo · Pull Request #17215 · cocos/cocos-engine · GitHub 。
我是2.4.5,真是大乌龙了,哈哈哈
跟着引擎组的改,定制一下引擎,他那个是最终解决方案
如果硬要解决的话,你可以先检查一下element是否被移除
那个 PR 就是解决循环过程中元素被删除的问题。
是的,改这里。你遇到的具体问题是什么呢?
所以这个问题怎么解决啊,3.8.3提出的问题为啥我3.8.5还有这个错,我是在预制体体里面引用其他预制体就可能会出现。我现在就是在移除那里新加了对element的判断 先让编辑器不卡死。各位大佬现在是怎么个方案。我不想使用定制引擎






