Answers:
C ++的一大优势:如果您决定这样做,则移植到Android / PC / DS / PSP /(在此处插入所选平台)将相对容易。在决定重写整个游戏之前,Objective-C会将您锁定在iOS中。
这里没有真正的利弊,至少没有一个应该迫使程序员习惯一种语言而不得不使用另一种语言。
性能不应该成为问题。如果您是一名优秀的Obj-C程序员,那么您不太可能在内部循环中编写大量繁重的消息,这意味着您真的会在C中编写这些内部循环。级别的程序员,很可能繁重的工作将由您选择延迟的任何库来完成,而您将受其选择所做的一切摆布。
可移植性 如果您在乎它,则是一个实际问题。如果没有,那么。跨平台并不是最终目标。首先取得成功将是一件好事:)您以后可以随时移植。如果您从第一天开始就没有计划跨平台,只是使用相同的语言就不会让您走得太远:需要解决的平台之间还有很多其他的实际差异。
完成项目比为技术烦恼更重要,如果您在Obj-C方面的工作效率更高,那么请留在Obj-C。
我的偏爱?我是C ++人。我很喜欢Obj-C,但是我对C ++很满意,并且确实编写了跨平台代码。
C ++上的Obj-C没有性能问题。两者都是经过编译的代码,并且回想起Obj-C是C的超集,而Obj-C ++是C ++的超集,当您想在同一程序中混合Obj-C和C ++时,这非常有用(易于操作和XCode对C ++方面有很好的支持)。所有语言组合都支持OpenGL,因此任何认真的图形工作都可以,并且不管语言如何,Apple都可以支持库。
也就是说,您的游戏目的是什么?
如果您仅是为IOS编写的,那么请不要担心,并以自己喜欢的任何语言或组合编写。对于我来说,这恰好是带有STL的Obj-C ++,因为这是我最喜欢的C ++部分。由于与C ++相比我更喜欢Obj-C,因此我倾向于使用此选项。
如果您打算移植到另一台设备,请使用带有转换层的C ++到Obj-C进行编写,以处理任何特定于设备的内容(图形,输入,相机等),并在其中进行调用应用程序中的入口点。
如果您是最纯粹的人,并且只想要一种语言,请使用Obj-C编写。
其他人谈论了其他图书馆(物理等)。从您正在谈论的任何语言选择(Obj-C,C ++或Obj-C ++)中访问任何一个,都绝对没有问题。您也不会以任何语言使用这些库遇到任何性能问题。
注意:有一个指针间接调用与消息传递。我不确定您可以将多少解释为开销,因为我非常确定这与继承的C ++方法调用完全相同。谁能澄清一下?
希望能有所帮助,
李
Vector3D
Obj-C 编写您的课程吗?我的直觉告诉我,这可能会导致性能下降。
这取决于究竟是什么你是编程。如果主要是使用现有物理和图形引擎的游戏逻辑,我可以肯定地说,如果您更喜欢obj-c,则看不到使用c或c ++的任何理由。如果要推出渲染类或物理类,我可能会使用c或c ++编写。Cocos2d-很棒,也是最流行的iOS游戏库之一是用obj-c编写的。
查看此内容-相关部分是“分工”,可能有助于您决定何时使用高级语言编写代码以及何时使用较低级别的代码: 游戏中的托管代码
尽管Objective-C的开销应该几乎不接近C#,甚至无法得到管理(在iOS上),但我相信逻辑仍然适用,而且运行iOS的设备也不如解释MSIL的PC强大。
这项研究表明,要真正获得CPU密集型游戏的性能,您必须使用C。链接的文章随附了可以运行的XCode项目。
我认为最重要的是:使用Objective-C,必须在其中与iPhone的功能进行交互(毕竟,将蹦床放在任何地方对任何人都不利),但是当涉及到循环时,矢量对象类之类的东西或密集型数组访问,请坚持使用C ++ STL或C数组以获得良好的性能。
我的意思是完全愚蠢的看到position = [[Vector3 alloc] init] ;
。如果您对诸如位置矢量之类的基本对象使用引用计数,您只是在要求提高性能。
另请参阅这些比较,