注:成功的前提: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"
- 1
- 2
- 1
- 2
在工程中,刪除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: 然後依次點進去,註釋掉就好了。
建議把搜索到的結果一個一個都註釋掉。
Demo:鏈接: https://pan.baidu.com/s/1eRYeQR4 密碼: mnrf