首先感谢以下博主给的帮助
http://www.jianshu.com/p/8d01bb1a3c14
http://www.jianshu.com/p/3ec42d546982
此篇只为记录自己合并的历程。
1 确定Unity导出工程支持版本以及正确运行。
2 导入文件。
2.1 将Unity导出的工程文件复制到iOS工程根目录
2.2 导入文件到工程里。classes Libraries虚拟文件夹,Data真实文件夹
3 工程配置
3.1 Bitcode 可选配置。目前我Unity导出的工程是支持Bitcode的,所以我还是YES
3.2 Framework Search Paths / Header Search Paths / Library Search Paths配置方式参考Unity导出的工程
3.3 将Classes文件夹下的Prefix.pch配置到工程的PrefixHeader 下。
4 引入Frameworks,参考Unity导出的iOS工程里存在的framework
5 添加Run Scrip, "$PROJECT_DIR/MapFileParser.sh" MapFileParser.sh文件要有可运行权限,如果不是,命令行执行 chmod "a+x" MapFileParser.sh即可。
6 代码层面的修改
6.1 将iOS原工程的main.m彻底删除,修改Classes下的main.mm文件,将AppControllerClassName改成原iOS工程AppDelegate
6.2 AppDelegate类修改如下
6.2 UnityAppController.h类 GetAppController()方法修改如下
7 测试,真机运行,随便点击下屏幕即可跳转到Unity程序界面,隐藏调用 AppDelegate类的 hideUnityWindow方法。
8 iOS与Unity数据通信
8.1 iOS调用Unity方法
iOS调用此函数 UnitySendMessage(<#const char *obj#>, <#const char *method#>, <#const char *msg#>)
第一个参数:C#对象名
第二个参数:需要调用的方法名
第三个参数:方法传的参数
实例: UnitySendMessage("GM", "MoveControllerInIos", jsonString.UTF8String);
8.2 Unity调用iOS方法
在某个类里实现如下方法。此类.m必须改成.mm
extern "C" {
// u3d退出
void _UnityQuit() {
}
}