0

我正在构建一个 cocos2d 连续运行的 ios 游戏,其中一个角色被动画化以穿过一个场景。背景、角色脚下的地面和奔跑角色身后的栅栏沿相反方向移动以模拟向前运动。角色本身是动画的,可以原地运行。偶尔会有额外的精灵在场景中移动。

我所有的动作(除了角色的原地动画)都发生在更新方法中。

我注意到当额外的精灵从场景中移动时,所有的移动部件都会结结巴巴。当没有额外的精灵时,口吃就会消失。

我还注意到,在 ipad 3 (ios 6.0.1) 中几乎察觉不到口吃,而在 iphone 3gs (ios 6.0.1) 和 ipad 1 (ios 5.1.1) 中最为明显,在iphone 4 (ios 6.0.1)。

我不知道从哪里开始解决这个问题 - 我尝试移除额外精灵的实际渲染,并且我还尝试移除角色后面的栅栏 - 但没有任何更改对口吃产生任何影响。

有什么建议么?

更新:通过运行时间分析器修复它,如下面的@Fogmeister 建议的那样。原来我在每次更新时都在做磁盘 i/o 以查找一些状态变量。我优化了它,所有设备上的口吃都消失了。谢谢!

4

2 回答 2

2

您需要确定在代码中占用时间并导致卡顿的原因。

这似乎只是一个优化问题,因为您可以在较旧、较慢的设备上看到更多的卡顿,而在功能更强大的新设备上则更少。

使用 Time Profiler 工具分析应用程序。这将告诉您时间花费在哪里,并几乎立即将您指向正在花费时间的函数(如果不是行)。

一旦你发现你可以开始优化。

于 2013-01-14T08:27:08.097 回答
1

你的精灵移动代码是什么?如果您在该-(void) update:(ccTime) delta {}方法中手动更新位置,请确保您将每个移动乘以delta以考虑任何微小的帧速率波动。

于 2013-01-14T08:44:53.333 回答