本文記錄的是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 截圖中對應選中的文件,放入自己項目中合理的位置,放入位置沒有特殊要求
二、將剛剛導入的三部分資源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頁面關閉后的處理