schedule执行指定次数后,会自动销毁吗?

如题,例如:
this.scheduleOnce(()=>{cc.log(‘scheduleOnce’)},1);
this.schedule(()=>{cc.log(‘schedule’)},1,3);
需要主动调用this.unschedule销毁吗?

翻了下源码看起来是不需要,trigger回调后标记次数,会在下次检测次数时发现大于repeat次数就cancel了,cancel会执行unschedule

好的,谢啦~!

安全起见还是调一下unschedule吧 因为有可能一次都没执行就退出界面,然后组件被销毁了

嗯嗯,确实

不需要,schedule内部执行次数大于repeat次数时,会自动调用cancel的。另外组件内使用this.schedule时,会在组件_onPreDestroy时取消所有绑定组件的schedule计时器,所以组件内放心使用this.schedule的计时器,销毁时不需要手动取消。

OK,那应该还是方便的,就是unschedule需要填回调函数名称,这个比较麻烦,我更习惯用箭头函数

如果是使用组件的如this.schedule,可以在组件销毁时,调用一次this.unscheduleAllCallbacks,这样一句代码取消所有组件所有的schedule,包括监听的箭头函数

嗯嗯,刚试了可以的,但是想主动销毁schedule还是要给回调函数取名字,不能用箭头函数

cocos自带计时器,会有个问题,当node的active=false的时候。定时器也会停。

:joy:这不是问题,这是设计如此