iOS 中集成 Unity3D (附Demo)

公司有个AR项目,对ios与u3d进行集成,需求如下,点击按钮进入Unity3D界面,并且能够返回,在网上找了一些方法,文章中会进行最简单的集成,最后会附上资料链接以及Demo。

1 . 新建一个文件夹 取名字为 iOS_Unity 里面存放两个文件夹 分别取名字为 ios 和 unity .

iOS 中集成 Unity3D (附Demo)_第1张图片

2. 打开U3D 选择新建(NEW)  工程名字取名字叫 nativeUnity  位置(location) 选择我们刚刚创建的IntegrateUnity文件夹下面的unity,然后点击Create project .


iOS 中集成 Unity3D (附Demo)_第2张图片

3. 打开U3D之后随便创建一个东西,然后点击左上方File-->BuildSetting,此时会弹出一个框,iPad. 怎么样随意建一个U3D工程,自己网上选择ios然后点击player Setting.设置如下:iphone就选择iPhone,iPad就选择iPad

iOS 中集成 Unity3D (附Demo)_第3张图片

4. 设置结束之后,然后点击Build , 选择位置是IntegrateUnity-->unity,取名字为 unity_ios ,成功导出,如图:

iOS 中集成 Unity3D (附Demo)_第4张图片

5. 在真机上运行 一下 刚刚导出来的 Xcode 工程,运行成功.()

iOS 中集成 Unity3D (附Demo)_第5张图片

6. 在 IntegrateUnity下面的ios里面新建一个Xcode工程取名字为nativeiOS我的是7.3Unity版本是5.3.4f1.

7. 下面开始进行集成:新建两个文件夹分别为Unity 和 FrameWorks.在我们从Unity里面导出来ios工程中找到Libraries、Classes和Data拖进工程,此时要注意 Libraries和Classes过程中Copy items if needed -->不选    Create groups--> 选 ; 在Data时 Copy items if needed --> 不选 ,Create folder references -->选。


iOS 中集成 Unity3D (附Demo)_第6张图片

8 . 下面进行删除操作( 不删除也可以,并不是真正意义上的删除 )

libraries删除操作:

iOS 中集成 Unity3D (附Demo)_第7张图片

Classes删除操作:

选择Native然后在最底部进行.h筛选 删除Native下面的所有.h文件,几千个文件慢慢的删除,防止Xcode卡死.


iOS 中集成 Unity3D (附Demo)_第8张图片

9. 新建PCH文件 然后把Classes里面的Prefix.pch文件里面的东西全部复制到刚刚所建立的pch文件中,然后在Targer->Build Settings中进行相关配置:

Enable Bitcode  -->  NO

Other Link Flags -->  -weak_framework CoreMotion -weak-lSystem

对刚刚拖进来的Classes和Libraries的路径进行配置,看清路径是从Unity导出来的Xcode工程的:

iOS 中集成 Unity3D (附Demo)_第9张图片
iOS 中集成 Unity3D (附Demo)_第10张图片
iOS 中集成 Unity3D (附Demo)_第11张图片


iOS 中集成 Unity3D (附Demo)_第12张图片
iOS 中集成 Unity3D (附Demo)_第13张图片
iOS 中集成 Unity3D (附Demo)_第14张图片
iOS 中集成 Unity3D (附Demo)_第15张图片
最上面 + 进行添加
iOS 中集成 Unity3D (附Demo)_第16张图片
导入库设置

10. 把Classes里面的main.mm 全部复制下来 放到main.m里面 并且把main.m修改为main.mm , 并且把修改为main.mm里面的第13行(也可能行号不对自己去找就一个名字是这个的)"UnityAppController" 修改成 "AppDelegate" 然后


iOS 中集成 Unity3D (附Demo)_第17张图片

11. 把Classes里面的UnityAppController.h 进行修改如图:此时报错是因为AppDelegate里面没有做修改,

iOS 中集成 Unity3D (附Demo)_第18张图片
修改成下图
iOS 中集成 Unity3D (附Demo)_第19张图片

12 . 对AppDelegate进行如下代码:

iOS 中集成 Unity3D (附Demo)_第20张图片
iOS 中集成 Unity3D (附Demo)_第21张图片
iOS 中集成 Unity3D (附Demo)_第22张图片
iOS 中集成 Unity3D (附Demo)_第23张图片

此时会报错,pch文件加上一句话如下图:

iOS 中集成 Unity3D (附Demo)_第24张图片

14 .此时我们对工程进行Build一下: 会报错,我的报错如下:

iOS 中集成 Unity3D (附Demo)_第25张图片

在UnityAppController.h 上面加上@Class UnityViewControllerBase如图:

iOS 中集成 Unity3D (附Demo)_第26张图片

此时,在进行Build , 完美 、成功.

15. 到了最后的阶段了了,前期工作都已经做好下面就是进入到Unity3D界面:在ViewController.m里面创建一个Button,在这里就不进行截图了,点击触发方法如下:  导入AppDelegate.h文件:

16 . 进入到了U3d界面我们如何进行返回呢,如下图,在AppDelegate.m里面的ShowUnityWindow里面 写上如下方法:

iOS 中集成 Unity3D (附Demo)_第27张图片

17 . 此次进行真机运行 结果如下:


iOS 中集成 Unity3D (附Demo)_第28张图片

18 . 好了,到目前为止最简单的集成就这么实现了,下面附上参考的文章:

http://www.the-nerd.be/2015/11/13/integrate-unity-5-in-a-native-ios-app-with-xcode-7/

推荐链接

Demo连接  密码: 71ry

注: demo是最近才写的Xcode版本是8.3.2 Unity版本是5.3.4f1(未更新过),demo中的工程名字可能和文章中的名字稍微有点不一样但集成步骤是一样的。网盘中有两个文件一个是Demo下载下来真机运行就可以了, 另一个是Demo中使用的Unity工程(一起做项目的Unity工程师拿来给我测试用的我这里拿来做Demo了)导入Unity中按步骤集成即可。

你可能感兴趣的:(iOS 中集成 Unity3D (附Demo))