美文网首页
iOS工程合并Unity导出工程

iOS工程合并Unity导出工程

作者: 孔凡伍 | 来源:发表于2017-08-02 18:48 被阅读191次

首先感谢以下博主给的帮助
http://www.jianshu.com/p/8d01bb1a3c14
http://www.jianshu.com/p/3ec42d546982

此篇只为记录自己合并的历程。

1 确定Unity导出工程支持版本以及正确运行。
2 导入文件。
2.1 将Unity导出的工程文件复制到iOS工程根目录


屏幕快照 2017-08-02 17.39.47.png

2.2 导入文件到工程里。classes Libraries虚拟文件夹,Data真实文件夹

屏幕快照 2017-08-02 17.43.49.png

3 工程配置
3.1 Bitcode 可选配置。目前我Unity导出的工程是支持Bitcode的,所以我还是YES
3.2 Framework Search Paths / Header Search Paths / Library Search Paths配置方式参考Unity导出的工程

屏幕快照 2017-08-02 17.51.00.png

3.3 将Classes文件夹下的Prefix.pch配置到工程的PrefixHeader 下。


屏幕快照 2017-08-02 17.54.59.png

4 引入Frameworks,参考Unity导出的iOS工程里存在的framework

屏幕快照 2017-08-02 17.57.30.png

5 添加Run Scrip, "$PROJECT_DIR/MapFileParser.sh" MapFileParser.sh文件要有可运行权限,如果不是,命令行执行 chmod "a+x" MapFileParser.sh即可。

屏幕快照 2017-08-02 18.02.49.png

6 代码层面的修改
6.1 将iOS原工程的main.m彻底删除,修改Classes下的main.mm文件,将AppControllerClassName改成原iOS工程AppDelegate
6.2 AppDelegate类修改如下

屏幕快照 2017-08-02 18.10.50.png 屏幕快照 2017-08-02 18.11.07.png

6.2 UnityAppController.h类 GetAppController()方法修改如下

屏幕快照 2017-08-02 18.16.46.png

7 测试,真机运行,随便点击下屏幕即可跳转到Unity程序界面,隐藏调用 AppDelegate类的 hideUnityWindow方法。

屏幕快照 2017-08-02 18.18.07.png

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() {
    }
}

9 源码地址 https://github.com/kongfanwu/iOSMergeUnity3D

相关文章

网友评论

      本文标题:iOS工程合并Unity导出工程

      本文链接:https://www.haomeiwen.com/subject/zyjylxtx.html