5

在我过去的所有 iOS 游戏中,我都将游戏设置为一个简单的基于视图的应用程序,其中包含一个视图控制器、.h 文件和 .m 文件。我设置了一个NSTimer每秒 30、40 或 60 帧的集合,称为主运行循环。后来进入开发阶段,我将图形更新(较高的 FPS)和游戏计算(较低的 FPS)分开来减少延迟。我从来不明白如何在游戏中实现多线程/并发,因为图形和计算相互依赖......

鉴于我从未有机会阅读“真实”游戏的源代码,我是否以合理的方式设置它,或者我对游戏的主框架和运行循环采取了完全错误的方法?

我问这个是因为我注意到我的应用程序与 App Store 上的其他应用程序相比有很多滞后(例如,我的应用程序在 iPhone 3G 上严重滞后,但 Doodle Jump、Fruit Ninja、Cut the Rope 等运行比较顺利)。

4

1 回答 1

9
  1. 您想在运行循环中使用CADisplayLink而不是 NSTimer。
  2. 您想在 GPU 上进行尽可能多的绘图。这将释放 CPU 周期,并且硬件会加速您当前在软件中执行的大量计算。为此,您可以在 OpenGL 中将精灵绘制为 OpenGL 纹理。有像Cocos2D这样的库可以为您执行此操作。Cocos2D提供了一个简单的 API 来创建和动画精灵,它在底层完成了所有的 OpenGL,所以你不必这样做。
于 2012-04-10T02:42:26.323 回答