cocos creator3.8.0
button.clickEvents.push(clickEventHandler) 明明只执行了一次,但是为啥最终长度是2,一脸懵逼。
单独测试这个功能没问题,但是游戏运行过程中就会有,看不懂。

你这个是以NAutoRegNode组件对应的node为模板,创建了好几个这样的子对象吧?看着像是数据已经被污染了
你push之前,打印一下clickEvents中是个什么东西或者在按钮回调中断个点看看呗,光看打印能获取的信息太少了。
是的,我以这个组件对应的模板又实例化了很多次,但是比较好奇的是,看打印,实际运行的次数并没有增多,push调用的次数也是正常的,但是数据长度莫名其妙的增加了。不知道这个污染从哪里来的
打了断点,感觉是clickevents.push的时候压入了2次数据,两个数据是一模一样的。所以我才加了打印,我确认.push操作只调用了一次。很是神奇。
可能是array操作 把原数据给污染了 查看下代码里有数组的地方试试
这时候需要demo发出来了
简单粗暴:
clickevents.length = 0;
clickevents.push(...)