iOS整合Unity專案,將Unity匯出的Xcode工程匯入到另一個Xcode專案,及常見報錯的解決方法
1.Unity匯出工程時設定bundle 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(最下邊三個是HiAR UnitySDK裡邊的)
6.新增 Header Search Paths 和 Library Search Paths
7.other C Flags -> -DINIT_SCRIPTING_BACKEND=1
8.新增User-Defined (UNITY_RUNTIME_VERSION版本號與匯出工程的Unity版本號一致)
9.Unity/Classes/Prefix.pch 的程式碼複製到新建的pch檔案, 設定pch檔案路徑
10.將Classes/main.mm全部內容複製到main.m 並把副檔名改為.mm, 修改如下程式碼
11.新增Run Script
12. 修改UnityAppController.h如下程式碼
13.在AppDelegate.h .m中新增如下程式碼
在整合過程中可能遇到的問題
1.Unknown type name 'UnityViewControllerBase'
UnityViewControllerBase報錯, 把它改成UIViewController
2. Unknown type name 'AppDelegate'
在新建的專案裡邊不會報錯, 但是我整合到公司專案的時候報這個錯, 於是改成如下程式碼, 目前沒有出現問題, 如果有人知道原因, 請在評論區告訴我
3. Undefined symbols for architecture armv7
遇到這個錯的同學請新增AssetsLibrary.framework和Accelerate.framework
4.編譯時遇到Permission denied錯誤的是因為當前開發賬號對專案目錄沒有許可權執行MapFileParser.sh
解決辦法: 在終端執行命令 sudo chmod -R 777 所在的目錄
5. Functions that differ only in their return type cannot be overloaded
解決辦法: 把Enable Strict Checking of objc_msgSend Calls 改為NO
6. Control reaches end of non-void function
解決辦法: 把Mismatched Return Type 改為NO
// 可能有的步驟忘記了, 有疑問的可以在評論區留言
// 轉載請註明原地址