刚入门Cocos2d-X,就跟着Jacky的博客专栏 【cocos2d-x入门实战】微信飞机大战讲解 开始入门。
微信的飞机大战其实是个很简单的小游戏,不过这一切对于刚开始学Cocos2d-X的我来说,都是新的,于是碰到了很多问题,现做个总结。
Jaccky教程里是基于Windows平台,我从网友那要来他的代码后(后来他把源码放在Github上了),就在Windows平台下跑起来了。我以前是做VC三维方向,所以这对我不算很难。
不过,我是要在Mac平台下写代码,我的理解是只有在Mac平台下,才能在我的iPhone4S上真机调试,在Windows下应该不方便调试吧?(不知道我的想法是不是对的,我真没装逼...)
问题一:Xcode的源代码管理。
我本来想随便倒腾倒腾可能就搞定了,但随便倒腾之后就出错了,Xcode我也是刚开始用,也就很难找出错误在哪。不得已,得先把代码管理工具用起来。我之前都是用SVN,不过Xcode对Git支持得更好,再加上网上有免费的Git私库可以用,我就决定试试Git。
其实之前在Window下自觉过Git,不过没去用,还写了两篇文章。
分享一个挺不错的Git视频教程
SVN和Git的比较
如果你用的是Github,那我推荐它的工具Github for Mac或Github for Windows,相当好用。当然上手之后直接敲命令也是可以的。
问题二:Visual Studio代码怎么移植到Xcode?
参考这篇文章:Cocos2d-x项目从VS移植到Xcode中的配置
大家努力去多动手尝试,并理解上文Add To Targers等几个参数的意义,后面遇到的bug可能跟这步都有关系。Xcode跟VS还是有挺多东西不一样,坑挺多的。
问题三:VS代码移到Xcode中,中文变成乱码怎么办?
参考这篇文章:VisualStudio和XCode的源文件编码转换
还是挺麻烦的,能用英文写就尽量用英文写
问题四:游戏没声音,什么情况?
资源路径错误。声音文件是放在Resource/sound/xx.mp3 目录下的,在Win32下调用要/sound/xx.mp3,而在Xcode下只需xx.mp3就可以了。
包括其它纹理的调用也是同样的情况。
问题五:我机一通乱扫射后,敌机没碰到也自动全死了是什么情况?
这是玩家最喜欢的情况了,立马就可以通关了。
我是照着Jacky的源码,一点点地自己敲,让自己熟悉这些函数。这个bug找了挺久的,一直以为是子弹和敌机碰撞那块代码的问题。用Vim进行代码比对,也没看出错在哪里。最后慢慢注释代码,发现我把该用CCCallFuncN的地方,少敲了一个字母,用成了CCCallFunc。
来说说这两个函数的区别吧:cocos2d-x中CCCallFunc CCCallFuncN CCCallFuncND的区别和使用示例
问题六:CCSpriteFrameCache: Couldn't load texture
这个问题跟问题四还不一样。解决办法,重新加载资源,确保勾选Add Target。(Xcode真是坑爹呀)
问题七:为什么CCArray指针对象create()后,要retain()一下?
这个得参考CCArray的父类CCObject的内存自动释放机制。
可参考这篇文章:cocos2d-x游戏开发(五)神奇的自动释放
建议看下Cocos2d的整体框架,可参考这篇文章:cocos2d框架总览