有必要贴一下,我的项目所遇到的问题:
小游戏在 Android 上很流畅,但在 iOS 上就比较卡。
因为 2.1.0 有说提升了渲染性能,所以我是升级到了 2.1.0 的。
屏幕滚动类的游戏,是要么移动摄像机、要么移动图片的游戏,类似打飞机这种。
但是论坛内有部分同学遇到了 update 函数的 dt 参数数值波动大,导致游戏卡顿的现象
(相关帖子:update dt 数值波动太大了)。
滚屏,由于我们都是用生命周期回调函数:update 来驱动的,它逐帧回调。
而我们一般也是把配置好的速度值(iSpeed)逐帧计算给图片来实现移动的。
当 update 函数的调用频率本身就不稳定的时候,图片的移动也就不可避免的发生卡顿了。
当然,不稳定的原因也可能是其他因素引起的
(比如论坛首席客服王哲大大说的:不止是渲染,也可能是你的计算逻辑、网络等其他地方造成卡顿。也有可能是内存自动回收造成的卡顿。),
当你经过优化尝试、但卡顿却没有明显减轻的时候,可是试试这个方法:
【个人解决方法】:
由每帧 img.y += iSpeed
执行移动,改为:
let nSpeedScale: number = dt / (1 / 60.0); img.y += iSpeed * nSpeedScale;
在我的项目里,这个方法,比优化了碰撞检测逻辑、使用对象池后的尝试,效果明显的多(但不是说这些优化就不用做了)。