公司有個AR項目,對ios與u3d進行集成,需求如下,點擊按鈕進入Unity3D界面,并且能夠返回,在網上找了一些方法,文章中會進行最簡單的集成,最后會附上資料鏈接以及Demo。
1 . 新建一個文件夾 取名字為 iOS_Unity 里面存放兩個文件夾 分別取名字為 ios 和 unity .
2. 打開U3D 選擇新建(NEW)? 工程名字取名字叫 nativeUnity? 位置(location) 選擇我們剛剛創建的IntegrateUnity文件夾下面的unity,然后點擊Create project .
3. 打開U3D之后隨便創建一個東西,然后點擊左上方File-->BuildSetting,此時會彈出一個框,iPad. 怎么樣隨意建一個U3D工程,自己網上選擇ios然后點擊player Setting.設置如下:iphone就選擇iPhone,iPad就選擇iPad
4. 設置結束之后,然后點擊Build , 選擇位置是IntegrateUnity-->unity,取名字為 unity_ios ,成功導出,如圖:
5. 在真機上運行 一下 剛剛導出來的 Xcode 工程,運行成功.()
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 -->選。
8 . 下面進行刪除操作( 不刪除也可以,并不是真正意義上的刪除 )
libraries刪除操作:
Classes刪除操作:
選擇Native然后在最底部進行.h篩選 刪除Native下面的所有.h文件,幾千個文件慢慢的刪除,防止Xcode卡死.
9. 新建PCH文件 然后把Classes里面的Prefix.pch文件里面的東西全部復制到剛剛所建立的pch文件中,然后在Targer->Build Settings中進行相關配置:
Enable Bitcode ?--> ?NO
Other Link Flags --> ?-weak_framework CoreMotion -weak-lSystem
對剛剛拖進來的Classes和Libraries的路徑進行配置,看清路徑是從Unity導出來的Xcode工程的:
10. 把Classes里面的main.mm 全部復制下來 放到main.m里面 并且把main.m修改為main.mm , 并且把修改為main.mm里面的第13行(也可能行號不對自己去找就一個名字是這個的)"UnityAppController" 修改成 "AppDelegate" 然后
11. 把Classes里面的UnityAppController.h 進行修改如圖:此時報錯是因為AppDelegate里面沒有做修改,
12 . 對AppDelegate進行如下代碼:
此時會報錯,pch文件加上一句話如下圖:
14 .此時我們對工程進行Build一下: 會報錯,我的報錯如下:
在UnityAppController.h 上面加上@Class UnityViewControllerBase如圖:
此時,在進行Build , 完美 、成功.
15. 到了最后的階段了了,前期工作都已經做好下面就是進入到Unity3D界面:在ViewController.m里面創建一個Button,在這里就不進行截圖了,點擊觸發方法如下: ?導入AppDelegate.h文件:
16 . 進入到了U3d界面我們如何進行返回呢,如下圖,在AppDelegate.m里面的ShowUnityWindow里面 寫上如下方法:
17 . 此次進行真機運行 結果如下:
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中按步驟集成即可。