最近项目要嵌入cocos游戏,记录下嵌入过程。
环境:
cocos游戏是cocoscreator3.8.1导出的可运行iOS工程, 里边引入了大量的cocos库文件,主要生成了两个静态库boost_container.a和cocos_engine.a文件
方案1:
- 先跑一下cocos游戏,确保能正常跑通
- 复制cocos游戏项目的Other Linker Flags配置到iOS项目
- 复制cocos游戏项目的Header Search Paths配置到iOS项目
- 游戏资源要在Build Phases加脚本导入(cocos游戏文件有同名文件),注意SRC路径要改成资源实际的路径
- AppDelegateBridge.mm文件可以把渲染游戏的view传过去(默认window)
- SystemWindow.mm文件getWindowHandle方法判断_externalHandle
set -e
SRC="${PROJECT_DIR}/GoldRed/Resource/Game"
DST="${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/data"
rm -rf "$DST"
mkdir -p "$DST"
rsync -av --delete "$SRC/" "$DST/"
- 接下来就是侨接文件和调用的问题了,比如游戏的开始、暂停、恢复、回调等都要暴露出相应的接口,还有个问题就是cocos游戏默认是拿keywindow当作游戏渲染试图的,如果你只想把游戏放到某个view上,就需要在AppDelegateBridge初始化的时候把渲染view传过去。
- 以上完成之后,在iOS项目导入侨接文件正常调用就行了
- 运行的时候有些地方可能会崩溃,注意查看是不是部分游戏文件内存释放问题(cocos游戏默认mrc),如果是内存的问题,可以在该文件后边加-fobjc-arc,比如IOSPlatform.mm文件
方案2:
- 整个配置做成pod库,不再需要手动配置Build Settings