Cocos2d-x 各类bug解决方案全集
这里面将包括我在使用Cocos2d-x开发游戏时,遇到的所有比较罕见且重要的bug的解决方案。
- Cocos2d-x 2.0.4版本的CCBReader代码,在xCode 4.6版本编译后,读取ccbi文件出错。原因是xCode 4.6版本编译使用的ARM指令集,在内存对齐这块有点特殊。解决方法:将readHead(),readFloat()函数中强制转换成float*代码注释掉,使用unsigned char*去保存地址。
参考帖子:http://www.cocos2d-x.org/boards/6/topics/18183
- Cocos2d-x 2.0.4版本的android项目工程搭建后,无法在模拟器中调试。主要原因有两点:
1.模拟器没有开启使用GPU Emulation。
2.android版本Cocos2d-x,检查模拟器是否支持OpenGLES 2.0的代码有点问题。
对应解决方法:
1.开启GPU Emulation功能,在新的模拟器(我的是基于Android4.2版本的模拟器)中关于GPU的所有设置改为了【Use Host GPU】复选框。旧模拟器的好像在硬件设置里面直接能找到GPU Emulation设置。
2.在Cocos2dxActivity.java的onCreateView()函数的
gLSurfaceView.setCocos2dxRenderer(new Cocos2dxRenderer());
代码之前加入一行新代码
gLSurfaceView.setEGLConfigChooser(8 , 8, 8, 8, 16, 0);
具体新加的代码什么含义本人不清楚(本人大学一直学的DirectX,没有摸过OpenGL,以后肯定要买点OpenGL的经典原著看看)。
参考帖子:http://www.cocos2d-x.org/boards/6/topics/12563
- 当使用ndk-r8d版本,且使用eclipse编译代码C++代码的时候,可能会报出error: cant run because this: APP_PLATFORM android-9 is larger than android:minSdkVersion 8 in AndroidManifest.xml.其实这只是个NDK的警告,但是eclipse却把它作为error处理。解决方法:在eclipse的项目【C/C++ Builder】中的build命令中追加NDK_NO_WARNINGS=1
参考帖子:http://quirkygba.blogspot.com/2012/11/two-problems-with-android-ndk-r8c.html
- 在使用eclipse的CDT(C++ Development tools)编译时,可能会出现提示please define NDK_ROOT,并且不能运行程序。
解决方法:右击项目-》【Property】-》【C/C++ Builder】-》【environment]中添加一个环境变量:name:NDK_ROOT,value:你的ndk根路径。
参考帖子:http://www.cnblogs.com/young40/archive/2012/10/19/cocos2d-x-mac-os-x-android-xcode-ios-development-setup.html