由于公司項目的需要,需要將unity3D工程跟原生工程合并, 所以不得不接觸unity3D, 本文是將unity3D導出的iOS代碼移植到Xcode本地建的工程中, 上代碼:
首先,總體來說,總的步驟分為兩大塊, 第一,你需要從unity3D中導出Xcode第二,你需要將導出的iOS代碼部分移植到你想要的本地iOS項目中.
第一部分, unity3D導出Xcode項目
1.打開你的unity工程,然后點擊上邊菜單欄file中的build settings
2. 接著會彈出一個如下的框, 點擊switch platform 選擇iOS平臺,
3. 點擊player settings... 配置參數如下圖
4. 配置完成后點擊build, 等待完成,這個過程可能會時間長點,稍安勿躁, 完成之后是這樣的
5.然后打開文件iOS文件夾是這樣的,我們需要的重要核心的代碼都在畫紅線的這幾個文件夾中,所以,我們下面就需要把這幾個畫紅線的文件夾拷貝到我們需要的iOS原生項目中.
第一部分導出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)
注意:文件拖進工程的方式不完全一樣,注意勾選的地方
5.添加framework(注意Optional的三個)
6.添加Header Search Paths和Library Search Paths
7.other C Flags -> -DINIT_SCRIPTING_BACKEND=1
8.添加User-Defined (UNITY_RUNTIME_VERSION版本號與導出工程的Unity版本號需要一致)
9.添加Run Script
10.把Unity/Classes/Prefix.pch的代碼復制到新建的pct文件, 并把classes文件夾下的pct文件刪除,注意,這里的刪除并不是徹底的刪除, 而是從列表中刪除,選擇中間這個, 以下步驟中所說的刪除都是這個意思,請牢記哈!
11. 將Classes/main.mm全部內容復制到main.m 并把擴展名改為.mm
12. 修改UnityAppController.h
13.在AppDelegate.h .m中添加如下代碼
到這里基本上已經完成從本地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的
看下圖
在UnityAppController.mm里這個方法中寫
然后就OK了
以上就是全部了呦,歡迎大家指正, 多多交流!!!