cocos2d最佳实践,多线程vs调度程序

时间:2011-06-03 23:53:18

标签: multithreading performance cocos2d-iphone scheduler

嗯,没有太多示例代码。我正在写一个游戏循环而且我遇到了障碍。起初我尝试为循环创建一个计划,因为它在最佳实践中被列为应该完成的方式。我的帧速率是60 fps,循环也是以60 fps的间隔运行。然而,我很快注意到间隔时间仅仅是一个建议,并且该功能正在更新的实际速率非常不稳定,范围在15到65 fps之间。这导致对象更新跳跃,即使他们的更新距离被调节为时间的函数。一旦更新降至20 fps以下,它在更新时变得非常明显并且非常难看。

然后我尝试创建自己的线程,以便我可以更密切地调整更新速率。通过这种方法,我能够几乎精确地调节我的更新率。通过这一切,所有动作和动画都很流畅。这种方法的问题是cocos2d显然不能很好地支持多线程,因为我经常看到屏幕撕裂。此外,如果我的更新率与我的抽奖率不完全匹配,我会看到跳跃。我相信这是由于在我的更新循环中间触发了draw方法,这是多线程的一个常见问题。

我能想到解决这个问题的两种方法是找到一些方法来密切调节调度程序的触发速率,或找到一种方法来锁定绘图代码,直到我完成更新。我一直在寻找关于如何做其中任何一个的任何例子,并且没有成功。如果那里的任何人对如何处理这种情况有更清楚的想法,我会非常感谢一些建议。我已经习惯了C ++并且按照我告诉他们的速度发生事情。如果您需要我发布任何其他信息,请询问!提前感谢您的任何帮助。

1 个答案:

答案 0 :(得分:0)

您的问题出在预定的功能中。它只是无法以你想要的速度运行。尝试从cocos2d运行helloWorld场景,你会注意到fps在60附近稳定(59.8 - 60.2)