由于公司项目的需要,需要将unity3D工程跟原生工程合并, 所以不得不接触unity3D, 本文是将unity3D导出的iOS代码移植到Xcode本地建的工程中, 上代码:
首先,总体来说,总的步骤分为两大块, 第一,你需要从unity3D中导出Xcode第二,你需要将导出的iOS代码部分移植到你想要的本地iOS项目中.
第一部分, unity3D导出Xcode项目
1.打开你的unity工程,然后点击上边菜单栏file中的build settings
![](https://img.haomeiwen.com/i2310982/0c1e06512358ab04.png)
2. 接着会弹出一个如下的框, 点击switch platform 选择iOS平台,
![](https://img.haomeiwen.com/i2310982/75fabc84248e52b2.png)
3. 点击player settings... 配置参数如下图
![](https://img.haomeiwen.com/i2310982/fa3f636331893eb5.png)
4. 配置完成后点击build, 等待完成,这个过程可能会时间长点,稍安勿躁, 完成之后是这样的
![](https://img.haomeiwen.com/i2310982/4643fc3247cd2a66.png)
5.然后打开文件iOS文件夹是这样的,我们需要的重要核心的代码都在画红线的这几个文件夹中,所以,我们下面就需要把这几个画红线的文件夹拷贝到我们需要的iOS原生项目中.
![](https://img.haomeiwen.com/i2310982/f80b5e34a0c1b51f.png)
第一部分导出Xcode工程已经完成,这部分很简单, 接着,我们就开始第二大部分,也是很容易出错的地方,尤其是配置需要注意.
第二部分, unity3D导出Xcode项目导入到原生的iOS项目中
1.Unity导出的工程中的bundleId要和你本地iOS项目的id一致
2.修改bit code为NO
3.删除Main.storyboard,代码设置控制器(方便切换window)
4.将Classes,Libraries,MapFileParser.sh拖入到项目(选中Copy items if needed,选中Create groups)
将Data拖入到项目(选中Copy items if needed,选中Create folder references)
注意:文件拖进工程的方式不完全一样,注意勾选的地方
![](https://img.haomeiwen.com/i2310982/4b40b1ae5d32f067.png)
5.添加framework(注意Optional的三个)
![](https://img.haomeiwen.com/i2310982/5b76e0e09bbd29c2.png)
![](https://img.haomeiwen.com/i2310982/b9e815dfd2298035.png)
6.添加Header Search Paths和Library Search Paths
![](https://img.haomeiwen.com/i2310982/b76a611baf919456.png)
7.other C Flags -> -DINIT_SCRIPTING_BACKEND=1
![](https://img.haomeiwen.com/i2310982/1d29b2d59528db1d.png)
8.添加User-Defined (UNITY_RUNTIME_VERSION版本号与导出工程的Unity版本号需要一致)
![](https://img.haomeiwen.com/i2310982/0eb3f443dec87e08.png)
9.添加Run Script
![](https://img.haomeiwen.com/i2310982/026ea6d32b554ce7.png)
10.把Unity/Classes/Prefix.pch的代码复制到新建的pct文件, 并把classes文件夹下的pct文件删除,注意,这里的删除并不是彻底的删除, 而是从列表中删除,选择中间这个, 以下步骤中所说的删除都是这个意思,请牢记哈!
![](https://img.haomeiwen.com/i2310982/f3d694cf15a23126.png)
11. 将Classes/main.mm全部内容复制到main.m 并把扩展名改为.mm
![](https://img.haomeiwen.com/i2310982/2c487b97aa0bcb4d.png)
12. 修改UnityAppController.h
![](https://img.haomeiwen.com/i2310982/dfe20efceeab8fe2.png)
13.在AppDelegate.h .m中添加如下代码
![](https://img.haomeiwen.com/i2310982/722d03afcf0b4c4a.png)
![](https://img.haomeiwen.com/i2310982/794c65f86be3b615.png)
![](https://img.haomeiwen.com/i2310982/8f2f85ae0264ccad.png)
到这里基本上已经完成从本地iOS跳转到Unity项目里了,接下来,是我在做的过程中遇到的问题.
1.Unknown type name 'UnityViewControllerBase'
解决办法就是把它改成UIViewController
2.iOS本地应用跳转unity的时候出现黑屏
原因是你的u3d工程集成了EasyAR插件,而这个插件下有个Assets/Plugins/iOS/EasyARAppController.mm,
@interface EasyARAppController : UnityAppController,这是整个app启动时的第一个controller,自己修改合并这个controller就OK了
或者是将EasyARAppController.mm的内容复制到你的自定义的子类中去,然后删除引用也是OK的
看下图
![](https://img.haomeiwen.com/i2310982/b4436a3e8853abb6.png)
在UnityAppController.mm里这个方法中写
![](https://img.haomeiwen.com/i2310982/5ccd818963c34b8b.png)
然后就OK了
以上就是全部了呦,欢迎大家指正, 多多交流!!!
网友评论
Ardemo/Classes/UnityAppController.mm:80:13: Property implementation must have its declaration in interface 'UnityAppController'
unity 版本是2017.2.0f3 xcode 7.2
我想問以下 。unity切換回到ios navi window介面 白屏 是什麼情況