title: iOS原生集成cocoscreator
date: 2020-09-21 12:00:25
tags: 游戏开发
游戏项目使用cocoscreator 2.4.0版本,发布iOS工程后集成到iOS原生工程,中途发现v8引擎在一个进程中只能初始化一次,导致退出游戏销毁引擎实例并释放资源后无法再次打开游戏,遂采用单例模式,每次退出游戏时只跳转到空场景然后释放资源并停止游戏主循环并不销毁引擎实例(注意,这里一定要跳转到空场景再释放资源,如果在游戏场景释放可能不及时,导致返回app时内存没有回落),这样做的好处是下次进入游戏比较快而且稳定,坏处就是退出游戏返回app时要多占用90M左右的内存。
cocos的iOS工程其实就是创建了一个RootViewController,并设置view为CCEAGLView,然后把这个RootViewController设置给window进行加载显示,同时初始化引擎并开始运行游戏。我们这里要做的就是创建一个GameViewController来替换cocos的RootViewController, 然后在原生iOS工程中通过按钮或者其他操作来加载显示我们的GameViewController并启动引擎,当关闭游戏时,我们移除GameViewController并停止引擎主循环(注意,不要销毁), 下次进入游戏时再次加载显示GameViewController并重启游戏即可。
一、导入cocos 工程相关文件到原生iOS工程
-
在原生iOS工程文件夹里新建一个cocos文件夹,并把cocos导出的iOS工程里的assets、src、main.js、jsb-adapter、project.json、frameworks拷贝进去。
-
打开iOS原生工程,工程根目录导入cocos下的文件和文件夹,这里要*注意文件夹的黄色(group)和蓝色(fold references)*区别。以蓝色fold references导入assets、cocos2d_libs.xcodeproj,以黄色group模式导入ios、Classes文件夹,新建一个名为Resources的group,并以fold references模式导入main.js、project.json、src、jsb-adapter到其中。完成后到目录结构如下:
-
把cocos导出的iOS工程里所用到的frameworks全部导入到原生iOS工程
-
为原生iOS工程的TARGETS添加Dependences(Build Phase/Dependencies):libcocos2d iOS(cocos2d_libs)
-
参考cocos导出的iOS工程为原生工程的PROJECT添加以下头文件搜索路径(Build Settings/Search Paths/User Header Search Paths), ( P R O J E C T D I R ) 为 相 对 工 程 根 目 录 路 径 , (PROJECT_DIR)为相对工程根目录路径, (PROJECT