我正在构建一个cocos2d连续运行的ios游戏,其中一个角色是动画通过一个场景运行。背景、角色脚下的地面和奔跑角色后面的栅栏以相反的方向移动,以模拟向前运动。角色本身已设置动画,以便在适当的位置运行。偶尔,其他精灵会在场景中移动。
我所有的移动(除了角色的就地动画)都发生在update方法中。
我注意到当附加的精灵经过场景时,所有移动的部分都卡顿了。当没有额外的子画面时,卡顿就会消失。
我还注意到,在iPad3 (ios 6.0.1)中几乎看不到卡顿,而在iPhone3GS (ios 6.0.1)和iPad1 (ios 5.1.1)中最明显,在iPhone4 (ios 6.0.1)上中等明显。
我不知道从哪里开始解决这个问题-我尝试删除额外的精灵的实际渲染,我也尝试删除字符后面的栅栏-但这两个更改都没有对卡顿产生任何影响。
有什么建议吗?
更新:通过运行@Fogmeister建议的时间分析器修复了这个问题。原来,我在每次更新时都执行磁盘i/o操作,以查找一些状态变量。我对此进行了优化,所有设备上的卡顿都消失了。谢谢!
发布于 2013-01-14 16:27:08
您需要确定是什么占用了代码中的时间并导致了卡顿。
这似乎只是一个优化问题,因为你可以在更老、更慢的设备上看到更多的卡顿,而在新的更强大的设备上看到更少的卡顿。
使用Time Profiler仪器分析应用程序。这将告诉你时间被花费在哪里,并几乎立即将你指向正在花费时间的函数(如果不是行)。
一旦你发现了,你就可以开始优化了。
发布于 2013-01-14 16:44:53
你对精灵移动的代码是什么?如果您在-(void) update:(ccTime) delta {}方法中手动更新位置,请确保将每个移动乘以delta,以考虑任何微小的帧率波动。
https://stackoverflow.com/questions/14315016
复制相似问题