1 首先将导出包运行看是否报错。可以跑起来再做如下操作。
将Classes、Data、Libraries三个文件夹和MapFileParser.sh文件复制到自己的iOS工程中。自己的iOS项目目录:
2 将文件添加到项目中
2.1 将Data文件夹以以下方式添加
2.2 将Classes、Libraries文件夹按如下方式添加
2.3 如果Classes->Native目录下有.h文件,需要全部删除引用
再删除Libraries->libil2cpp文件夹的引用,操作同上
3 iOS工程的环境配置,以Unity的项目为参考
3.1 添加应用库
3.2 添加头文件和库的搜索路径
3.3 其他的一些配置
Other C Flag、Other Linker Flags
如果自己iOS项目中有pch文件,则将Prefix.pch里面的文件拷贝到自己的pch文件中,并在合后的pch文件中添加#import "UnityAppController.h"
3.4 添加用户自定义的设置
4 修改main.m文件
把Classes/文件夹里面的main.mm里面的代码,拷贝到Supporting
Files/下的main.m文件中,并把后缀改成.mm,修改如下图
然后删除Classe目录下单main.mm文件。注意:一样是删除引用。
5 修改AppDelegate文件
5.1 .h文件增加unityController属性
@property (strong, nonatomic) UnityAppController * unityController;
5.2 .m文件做如下修改
6 修改UnityAppController.h文件
并增加两个方法restartUnity、hideUnityWindow
在UnityAppController.mm实现
7 新建Unity的显示控制器
在新的Unity界面显示时调用启动startUnity的方法,如有需要可以再调用切换场景的方法;
第二次启动直接调用restartUnity的方法
8 iOS和Unity的调用方法
8.1 iOS调用Unity的方法:
三个参数分别是:物体名、方法名、参数
UnitySendMessage("Global", "UpdateUnityInfo", [@"show23" UTF8String]) ;
8.2 Unity调用iOS原生的方法
在Libraries文件下新建UnityToIOS文件夹,在此新建两个文件如下:
9 常见问题
9.1 Control may reach end of non-void function:
解决办法:方法末尾添加return NULL;
9.2 编译时遇到Permission denied:
解决办法:Chmod +x / Users/…../MapFileParser.sh
9.3 ]Undefined symbols for architecture arm6: "_GetAppController",referenced from:
解决办法:修改文件后缀为.mm