iOS Xcode原生專案整合Unity匯出的工程
Xcode原生專案整合Unity匯出的工程
注:成功的前提:Unity匯出的Xcode工程可以編譯。
1、 建立好工程之後,將Unity匯出的Xcode工程的以下資料夾複製到我們新建的工程中。
Unity匯出:
新建工程:
複製到我們新建的工程中(Command + C,Command + V)
2、 搜尋Class/Native目錄下的所有.h檔案,如下圖
之後新建一個資料夾,隨便起名,然後將剛才搜尋到的所有.h檔案剪下到(直接拖)新建的資料夾。
Command + A(全選)然後拖。
此時Class/Native目錄下已經沒有.h檔案。這麼做的目的只是方便工程中引用,之後我們還要拖回來。
3、 開啟新建的工程,將Class、Libraries拖進根目錄,最好與finder中的目錄結構一樣。
注意選項不要選錯
完成後如圖所示
4、 將Data資料夾拖入工程,建立引用(注意選項)
如此一來,工程目錄如下:
對應的finder中的結構
5、 刪除Libraries目錄下的libil2cpp資料夾,選中此資料夾,按delete,或者右鍵-delete,選擇Remove References。
然後在finder中,把我們剛移出去的.h從臨時資料夾移回Class/Native資料夾:
6、 將main.m改名為main.mm
將Class目錄下的main.mm的內容全選,複製貼上到我們剛改名的main.mm下面,之前的main.mm僅留下:
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
在工程中,刪除Class目錄下的main.mm檔案,直接move to trash
此時有報錯,不用理會
7、 新增動態庫引用,這裡建議對照匯出的unity工程的配置來配置。我這裡就對照著添加了。注:預設的可能就會有幾個,沒關係不影響的。不要刪,只管新增。
這裡需要注意:AVFoundation、CoreMotion、iAd的Status都是Optional,其他的都是Required
配置完成後:
8、 找到Build Settings,進行如下配置:
關閉bitcode
在other linker flags中,新增四條記錄:
$(inherited)
-weak_framework
CoreMotion
-weak-lSystem
配置Header search paths
配置Library search Paths
這兩條建議與Unity匯出的工程保持一致,當然,注意一下目錄結構。如果你當初沒有按照我說的放在根目錄,這裡一定要注意。(路徑是按照finder來說的)。
一般來說Library Search Path是不用改的,系統會自動設定。
在Other C Flags中新增,C++那一行會自動新增
修改編譯器:
設定預編譯標頭檔案
可以直接從左邊拖過來,設定完成之後:
修改OC警告
修改所有語言警告:
在user-Defined,新增:
GCC_THUMB_SUPPORT NO
GCC_USE_INDIRECT_FUNCTION_CALLS NO
UNITY_RUNTIME_VERSION 5.6.0f3
注:此引數參考Unity匯出的工程中的值,不能亂填。
UNITY_SCRIPTING_BACKEND il2cpp
點選 +
9、 設定Build Phases
點選 + 新增指令碼:
注:這裡的文字也可以從Unity匯出的工程中複製
10、 在Prefix.pch中,新增一行:
注:如果工程中原來就有預編譯標頭檔案,建議合併到這裡。
11、 注意這裡選擇:
Command + B編譯,成功!
常見問題:
1. 如果編譯器報錯說沒有許可權訪問MapFileParser.sh這個指令碼,開啟終端,cd你的工程目錄(其實就是MapFileParser.sh所在目錄),回車。然後輸入以下命令:
sudo chmod +x MapFileParser.sh
然後輸入登入密碼,回車。再編譯試試。
如果有其他問題,歡迎評論,我們一起討論。
2. 因為我們的Unity是延遲載入的,所以如果出現所有的動畫(比如導航控制器push動畫)消失的問題,全域性搜尋 [UIView setAnimationsEnabled: 然後依次點進去,註釋掉就好了。
建議把搜尋到的結果一個一個都註釋掉。