本文记录的是iOS项目集成Cocos2d的过程,首先拿到一份用CocosCreator导出的iOS项目,本文使用的是Cocos Creator v2.3.1导出的项目,不同版本到处的项目结果可能会有所差异,其实集成过程有些操作也并非一定要严格按照本文记录的过程也是可以集成成功,仅是个人的步骤记录。
步骤:
一、拷贝Cocos Creator iOS项目资源到自己的项目
1、在自己项目中创建Resource(可自行命名)文件夹,拷贝Cocos项目里如下资源到Resource下
2、copy cocos2d-x
3、copy Classes
4、copy 截图中对应选中的文件,放入自己项目中合理的位置,放入位置没有特殊要求
若集成到原有项目中忽略此步骤,按后续流程走,如果是集成到一个全新的iOS项目可以进行此操作,后续有相应解释,或者自行看此步骤中要导入的文件代码也会明白
二、将刚刚导入的三部分资源add到项目中(注意add资源的方式)
1、xcode工程中导入cocos2d_libs.xcodeproj, 注意加入方式选择Create folder references.
2、导入Classes,注意方式为Create groups
3、导入Resource资源
三、配置项目
1、在项目配置中选择targets,在Build Phases-Target Dependencies和Link Binary With Libraries中加入对应库。
2、PROJECT中设置User Header Search Paths,相对路径,因为我把cocos2d-x文件夹放在Test.xcodeproj的同级目录,所以是这个路径。$(SRCROOT)是.xcodeproj所在位置
$(SRCROOT)/cocos2d-x
$(SRCROOT)/cocos2d-x/cocos
$(SRCROOT)/cocos2d-x/cocos/base
$(SRCROOT)/cocos2d-x/cocos/physics
$(SRCROOT)/cocos2d-x/cocos/math/kazmath
$(SRCROOT)/cocos2d-x/cocos/2d
$(SRCROOT)/cocos2d-x/cocos/gui
$(SRCROOT)/cocos2d-x/cocos/network
$(SRCROOT)/cocos2d-x/cocos/audio/include
$(SRCROOT)/cocos2d-x/cocos/editor-support
$(SRCROOT)/cocos2d-x/extensions
$(SRCROOT)/cocos2d-x/external
$(SRCROOT)/cocos2d-x/external/sources
$(SRCROOT)/cocos2d-x/external/chipmunk/include/chipmunk
$(SRCROOT)/cocos2d-x/cocos/scripting/js-bindings/manual
$(SRCROOT)/cocos2d-x/external/mac/include/v8
$(SRCROOT)/cocos2d-x/cocos/scripting/js-bindings/auto
3、设置TARGETS中User Header Search Paths
$(inherited)
$(SRCROOT)/cocos2d-x/cocos/platform/iOS
$(SRCROOT)/cocos2d-x/plugin/jsbindings/auto
$(SRCROOT)/cocos2d-x/plugin/jsbindings/manual
$(SRCROOT)/cocos2d-x/external/iOS/include
$(SRCROOT)/cocos2d-x/external/ios/include/spidermonkey
4、关闭BitCode
5、C / C++编译器的选择
6、改变Always Search User Paths为YES
四、
因导入的Classes中的资源有与iOS项目中的AppDelegate同名文件cocos::AppDelegate,避免冲突,可重命名导入资源的AppDelegate或者自己项目中的AppDelegate文件。
本文是重命名的iOS原生项目中的AppDelegate文件。
在重命名后的AppDelegate文件的didFinishLaunchingWithOptions方法中添加如下头文件及代码:
app = new AppDelegate(bounds.size.width * scale, bounds.size.height * scale);
app->setMultitouch(true);
app->start();
在加载cocos2d页面的目标控制器中添加如下代码,运行且跳转至此控制器即可正常加载cocos2d页面:
- (void)loadView {
// Set EAGLView as view of RootViewController
self.view = (__bridge CCEAGLView *)cocos2d::Application::getInstance()->getView();
}
本文目前为止只是描述了集成并运行初始页面的过程,后续在使用过程中还会更新相应内容如:cocos和native的交互方式,cocos页面关闭后的处理