我现在的游戏需要每隔三秒出现一个球,然后其他球做位移给新球腾位置,满六个就消除一个,然后需要购买道具,要求打开购买界面后暂停游戏,我使用了director.pause()后发现,由于我的出球时间是用settimeout也确定的,也就是说我有好几个延时器,这些延时器之间每个间隔三秒,这个时候我暂停了游戏,当我暂停时间太长再恢复时,一切就都乱套了,多个延时器同时到了运行的时间,就导致有的时候还没有六个球就开始消除,或者位移的位置不对,有大佬知道怎么解决吗,或者有什么其他可以固定隔多少多少秒之后执行还可以暂停的方法吗
用官方的schedule 替换到settimeout 就行,这个会受到director.pause的影响
当然,我更加推荐你用update自带的deltatime去自行计时,计时器或多或少会有误差,update你可以设定每帧最多多少秒就行,能完全规避同时完成多个延时器的情况,且方便后续处理
我本来的settimeout是在for循环里提前创建的,然后给一个时间,我改成schedule后,直接就每毫秒创建一个球,我写的时间是i*3,这是怎么回事呀
看着像settimeout是毫秒级,schedule是秒级,不过直接截图代码更直观一点
1.如果你只想每个循环里面执行一次,要用this.scheduleOnce, 你现在是创建了25个schedule,每3秒执行1次
2.unschedule用错了,和settimeout不同,unschedule传的应该是执行的函数,比如:this.schedule(a) this.unschedule(a)
谢谢大佬解惑
好的,解决了,谢谢大佬,我还有一个问题,游戏结束后我还需要倒计时15秒,这个我用的计算结束时的15秒后和现在的时间差,但是也是同样的问题,暂停时间,但这个肯定不会停,除了修改逻辑还有没有别的办法
使用缓动 也能做最后这15秒
缓动?缓动动画?
还是希望拥有举一反三的能力啊,倒计时15秒和间隔3秒不是一回事吗?
这个的倒计时是显示在界面上的,而且购买完道具后会重置,不购买道具关闭道具界面就会继续,缓动动画这个想法确实是不错,但是计时器?
之前我也是每个功能单独实现,后面做一个小游戏的时候发现状态机不只是能用于怪物、角色,整个游戏也是可以设置状态的。
比如游戏状态设置为运行,那么执行运行逻辑;游戏状态设置为暂停,那么只运行暂停的逻辑;再加上一个暂停退出状态,或者设置退出暂停的一个settimeout,可以实现倒计时15秒,并且你的逻辑会比较清晰。
像游戏里的计时或者什么的,只要是取的相对时间都首先应该用update里的dt解决,实在解决不了再考虑其他的!别想什么计时器、缓动,这些都是下下策
真不错,想法非常好 
当你在代码里大量使用async/await做异步编程的时候,就能体会到只有update的计时是多的么苍白了。使用schedule和tween的好处就是随时可以在想要的地方暂停这么个三五秒,然后再干接下去的事。不敢想象如果全挪到update里该是什么样的代码灾难
这个能不能监听是否结束,比如说倒计时结束后执行某些逻辑



