1

我在一本书中完成了一个突破性的游戏教程,但是球,这是一个 20x20 像素的图像,跳帧并且移动不是很流畅。模拟器和 iPhone 4S(真机)就是这种情况。该代码没有使用NSTimer(可能会更慢),但正在使用CADisplayLinkUIImageView setFrame执行动画。

iOS 上的 Core Animation 不是很适合开发动画类型的游戏吗?说如果它是一个游戏

  1. 入侵者(太空入侵者
  2. Breakout(作为教程中的游戏)
  3. 打砖块
  4. 愤怒的小鸟 / 割绳子 / 水果忍者

对于这些类型的游戏,Core Animation真的适合写上面的(2)吗?对于 (1)、(3) 和 (4),无论是 Cocos2D 还是 OpenGL ES 都更适合做这项工作。并且 Cocos2D 和 OpenGL ES 的性能非常接近。真的吗?

4

2 回答 2

3

Cocos2D 经常被关注是因为它易于编写常见的游戏逻辑,如碰撞检测和精灵动画、逐帧、缩放和其他在游戏开发中非常常见的过程,您可以将多个动画串在一起,然后组合,对它们进行排序,进行回调等等。这是引擎的一大好处。

然而,性能是另一回事。Cocos 提供批处理节点,将所有图形元素组合到一个 OpenGL 调用中,而不是在每一帧中分别“绘制”到屏幕上;这可以显着提高性能,尤其是对于大型图形。如果你有跳帧,我想知道 Cocos 中的批处理精灵是否会是缺失的环节。

Core Animation 给我留下了深刻的印象,并希望它能够在游戏中解决性能问题。我的理解是 CA 和 Cocos 一样,也是建立在 OpenGL ES 之上的,所以我希望两者都能取得好的结果。可能在 Cocos 中这样做更容易,因为它在内部是为游戏开发而设计和优化的。

于 2012-04-20T00:49:47.413 回答
0

如果您在使用 2D 应用程序时遇到性能问题,这可能是由于不了解如何从 CoreGraphics 获得最有效的结果,而不是切换到 OpenGL 可以解决的问题。2D 游戏可以与 CoreGraphics 完美配合,您只需要从正确的方法开始。首先,您不应该在每个 CADisplayLink 回调上重新渲染整个视图。相反,设置一个包含多个 CALayer 对象的 UIView。像这样设置图层:CALayer.contents = (id) cgImage,然后让系统在 x、y 或动画元素发生变化时进行渲染。您只需要定位元素并定义移动元素的动画。通过这种方法,系统将在后台将动画图像缓存在显卡上,并使用 GPU 操作重绘。

于 2013-06-15T21:56:56.513 回答