好吧,我会尽量简短地回答一个相当冗长的问题:这取决于。
现在有一些更长的想法和解释 - 这很长。 如果你没有读到最后,请确保你阅读了最后几句话。
首先我需要澄清的是,您列出的“技术”或 API 大多只与图形有关
(UIKit 除外,它也处理输入)只要你理解就可以了
图形只是其中的一部分(根据我的经验,我可能会添加“次要”)
一整场比赛。
除了图形之外,在进行真正的游戏时,还有很多事情需要处理。
为了不过分逃避这个问题,让我简单地说几句流行语:
游戏逻辑、人工智能、资源管理、物理、交互、网络(可能)、声音等。
我的建议是买一本关于该主题的好书,然后深入研究 [1,2]。
现在我略过了,回到你的问题:
基本上,OpenGL 和 QuarzCore 是“在屏幕上绘制”的核心技术。所有其他技术都建立在此之上。所以理论上,如果你想去
方式,您可以单独使用 OpenGL 或 QuarzCore 实现与图形输出相关的所有内容(而您必须考虑 QuarzCore 仅是 2D 绘图,而 OpenGL 也支持 3D,而 2D 实际上只是 3D 的一个特例)。我实际上相信 Quarz 也是建立在 OpenGL 之上的,但我不确定。
UIKit 建立在这些之上,使用它基本上做了两件事:a) 避免重新发明轮子,b) 使用户界面的创建更容易、更快、更健壮。当然,您可以通过指定四边形的坐标并将其发送到 OpenGL 进行处理来绘制每个按钮本身。然后,您必须检查每个用户输入是否点击您的按钮并调用关联的处理程序。然而,仅仅创建一个 UIButton 实例(甚至可能在 IB 中)并指定一个点击处理程序确实会移除很多工作。
底线:UIKit 非常适合创建用户界面。此外,它还可以与 OpenGL 和 QuarzCore 一起使用。即使在游戏中,我也将它用于 iOS 上的用户界面。
关于 Cocos2D:这是一个建立在 OpenGL 之上的“游戏引擎”。因此,它包含了很多你在滚动你自己的基于 OpenGL 的引擎时必须自己处理的东西,即场景管理、精灵、纹理、网格、资源等。我相信它还与物理和碰撞检测库有联系.然而,为了了解那里发生的事情,需要了解计算机图形和游戏的工作原理[1,2,3]。
底线:您将使用 Cocos2D 制作(2D)游戏图形,使用 UIKit 制作用户界面。
CoreAnimation 然后是用于动画 CoreGraphics 的东西。它提供了一个简单的界面,例如用于平滑滑动或旋转东西,封装所有需要的计算(插值,重绘等)。不适用于 OpenGL - 但我认为 Cocos2D 也会有一个包装器。
底线:用于精美的用户界面动画。
说了这么多,只是略过顶部,我一开始并不想吓到你。
对于您的特殊游戏(并且每款游戏都是特殊的),您很可能只使用 UIKit 和 CoreAnimiation 来处理图形,它很可能会成为一款轰动一时的游戏。它们允许通过易于使用的界面进行大量绘图,而且它们不需要太深的背景知识,并且对于小型项目来说具有足够的性能。
如果您有一个很棒的游戏创意,请使用最简单的图形解决方案,让您和您的玩家满意并实现它。一旦你开始了,你仍然可以在必要时改进它。
[1]http://www.mcshaffry.com/GameCode/
[2]http://www.gameenginebook.com/
[3]http://www.opengl.org/documentation/red_book/