如果需要很多个计时任务,是开启多个计时器的性能好还是全部放在update()里面计算好啊
update里面吧,你new 多个计时任务也有消耗的,不过都放在update里面很可能代码就不好维护了
2赞
你认为定时器内部是怎么实现的?
多个计时任务,我刚做了这个功能,就是记录每个任务的过期时间戳,然后用update每秒更新显示
开启多个计时器很容易出bug,游戏引擎有update,为啥不用呢
我猜开计时器也相当于是在update里面计算,和update同一条线。
或者应该说是update就是全局计时器中的一个方法,自己开计时器只是在全局计时器中再创建一个类似update方法
你可以封装一个TimeManager类,主要实现注册事件、移除事件、时间更新(update)的方法,在引擎的update中调用这个类中的update方法(传dt作为参数),然后根据时间去处理注册的事件。
注意只能有一个引擎的update在调用TimeManager类的update方法。
用一个计时器就好了,取你要的最小反应时间,然后用计时变量来触发多个时间分段事件。
let currWorldTime = 0;
this.schedule(() => {
currWorldTime++;
if (currWorldTime % 2 == 0) { //第二个事件
}
if (currWorldTime % 5 == 0) { //第三个事件
}
if (currWorldTime % 10 == 0) { //第四个事件
}
}, 1);
1赞
确实。。。
真要用定时器函数的,一定要记得释放。。。。不然会给你带来意外惊喜的~