如果需要很多个计时任务,是开启多个计时器的性能好还是全部放在update()里面计算性能好啊

如果需要很多个计时任务,是开启多个计时器的性能好还是全部放在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赞

确实。。。

真要用定时器函数的,一定要记得释放。。。。不然会给你带来意外惊喜的~