4

我想做一个 2D iPhone 游戏,我做了一些研究,Cocos2D 似乎是最好的选择,我只是想知道在处理 Cocos2D 之前我需要多少 Objective-C 知识。我了解 Objective-C 编程的基础知识——我可以制作一个基本的命令行工具应用程序。我已经完成了一些 iOS SDK 教程,但如果有人问我,我不知道如何制作 iOS 应用程序,因为我目前正在学习的教程大约有 3 年的历史。

在使用 Cocos2D 之前需要什么作为先验知识,有人知道任何好的资源吗?我更像是一个视觉学习者,所以我发现视频比书籍或博客文章更有帮助。

提前感谢您的时间和任何帮助:)

4

5 回答 5

3

不需要事先学习。用它。如果您遇到问题,请查找、谷歌搜索或提出问题。

含义:不要在没有实际应用它们的情况下浪费时间学习一般概念。

类比:你不需要机械工程博士学位来驾驶汽车——尽管当你遇到任何问题时它可能会有所帮助。但在这种情况下,只需做 99% 的人都会做的事情:寻求帮助。首先了解汽车可能遇到的潜在问题几乎没有任何意义,当它们发生时你会处理它们。

另外:挫折是游戏的一部分,无法避免。:)

于 2013-02-05T19:12:20.507 回答
1

我需要多少 Objective-C 知识

很多。在尝试制作这样一个更大的项目之前,您需要掌握 Objective-C。

而要理解 Objective-C,你需要对 C 有非常扎实的了解。

(另外,为了使用 Cocos2D 中的 3rd-party 框架,请确保您了解基本的默认库,例如 Foundation 和 UIKit。)

于 2013-02-05T15:48:39.560 回答
0

这个问题的答案真的取决于你是谁,你的职业道德,以及你愿意付出多少努力来同意这种努力。我认为,如果您对其他 OO 语言/框架有坚实的基础,那么您的追求是可能的。我将首先“重新利用”一个免费提供的游戏(您会从Ray WenderlichSteffen Itterheim找到许多很好的示例和教程。选择一个与您的游戏规范不太“遥远”的示例项目,然后重新调整它的用途。在做所以,你将闯入 Objective-C 和一些你需要理解的基本框架。如果你专注并坚持下去,就会掌握它。此外,SO 规则:这里有很多答案:适当的问题会产生很多有用的提示和解决问题的方法。

附言。我最大的学习曲线原来是 xCode,一个真正神秘且充满教条的 IDE。此后,我切换到另一个 IDE,我的工作效率又回到了可观的水平。

于 2013-02-05T16:00:27.650 回答
0

对于像 Free flow 这样的游戏,具备 Objective-C 的中级知识就足够了。但是如果你打算制作像 Temple Run 这样的东西,那么你需要对 Objective-C、Open-Gl 和 cocos2d 有很好的了解。

我推荐的网站是 raywenderlich.com,我就是从那里开始的,他们提供从真正基础到真正高级的教程。

希望这可以帮助

于 2013-02-05T15:46:42.120 回答
0

我最近同时学习了 Objective-C 和 cocos2d。一开始我做了很多关于objective-c的阅读,给我一个入门知识。除了语法,大部分知识在我的游戏中都没有用到。在开始学习 cocos2d 教程之前,学习 Objective-c 最重要的事情是内存管理和调试。

引用计数内存管理可能需要一分钟来适应,具体取决于您来自什么语言。一般规则是,如果你分配/复制(没有自动释放)或保留它,你必须在某个时候释放它,如果你需要使用超出当前范围的东西,你应该保留它。您可以从一些覆盖对象 dealloc 方法的 cocos2d 示例中看到,以便释放您创建/保留的任何内容。

调试也花了我一分钟时间来适应。如果您添加一个可用于记录未捕获异常的高级 try/catch 块,它会有所帮助,否则您的一些错误将给您提供很少的信息。您可能还想研究/弄乱您的一些项目设置,以便更好地捕捉错误,例如启用僵尸。Objective-c 崩溃的一个重要原因是向已经释放的对象发送消息。一旦遇到无法弄清楚的 badaccess 错误,您基本上将被迫深入研究这些东西以找出原因。

其他一些会派上用场的纯客观 c 知识非常熟悉 NSArray 和 NSDictionary 对象如何工作,它们如何自动保留/释放,以及它们如何只能保存对象(没有原始值)。要使用浮点数/整数和数组/字典,您需要将原语转换为类似 NSNumber 对象的东西,只需稍加研究即可轻松完成。另一个有用的方法是知道如何保存/加载 plist。在 NSArray 和 NSDictionary 对象上执行此操作有一些方便的方法。这与 NSFileManager 的一些知识一起应该足以帮助您保存/加载游戏状态。如果你想在你的编码中变得非常花哨/干净,你还将了解 Objective-c 中的观察者。KVO 非常适合在某些对象属性更改时自动更新 UI。例如,我的 HUD KVOs 玩家对象的生命,因此当生命值改变时,HUD 会自动更新。这可以让你制作一个更干净的 MVC 类型的应用程序。您还可以注册以收听其他类型的消息(不仅仅是属性更改),只需确保在完成收听后取消注册您的侦听器。

我的最后一点建议是始终注意 XCode 警告。如果你得到一个,你不知道为什么,你应该弄清楚为什么。您可能可以忽略一些简单的错误,其他可能会导致您无法以任何其他方式追踪的错误。例如,我曾经在我的代码中使用了函数 max(),xcode 给了我一个我不理解的奇怪警告。这通过破坏堆栈对我的程序造成了严重破坏。当我将 max() 更改为 MAX() 时,三四个无法解释的错误立即消失了。这种事情可能会让你倒退数周,如果你没有立即抓住它,就要认真梳理你的每一段代码。

其余的大部分可以通过查看 cocos2d 代码/示例来学习。祝你好运。

于 2013-02-05T19:44:26.340 回答