最近做了乙個專案,需要和u3d的合作,第一次做這種專案,當兩邊都做完了工程,開始進行合併的時候,蒙 了,各種報錯,不知所云。還好廣大同行的無私奉獻精神,幫我度過了難關。特此寫下我的糾結路程,希望也可以幫助到遇到相同困難的你
u3d的版本5.4.1f
xcode版本是8.0
這兩個版本都是這時候最新的版本。
我採用的是把u3d匯出的ios 匯入到ios工程中。
(1)乙個執行都沒有錯誤的u3dios工程
(2)乙個執行都沒有錯誤的iosnative工程。
(3)乙個真機,u3dios不做特殊處理必須在真機上進行測試,所以在編譯的時候要選擇裝置。不然會報200個不知所云的錯誤。
(4)參考文件
[1][2]
(1)把u3d中的 classes、data、libraries、mapfileparser.sh 檔案先貼上到iosnative工程的根目錄下
(2)注意這裡幾個檔案的新增方式,如果新增方式錯誤了,會導致整合的徹底失敗
classes、libraries、mapfileparser.sh 通過add 新增到專案中,注意(選擇copy items if need 選擇 create groups)
我只有通過add新增是正確的,通過別的方式都是錯誤的
data新增到專案中 (選擇copy items if needs,選中 create folder references)這個不是通過add新增的,我的測試通過add新增是失敗的。
(3)新增framework
下面的這些都需要新增到ios 原生工程中去。
注意:libiconv.2.dylib 這個的新增方法
add other 然後全域性搜尋 command+shift+g 然後輸入/usr/lib 查詢就可以了
(4)新增runscript,這個在xcode8的版本上不用寫
(5)新增 search paths
(6)預處理檔案.pch
需要把u3d和ios的.pch檔案集成為乙個。可以通過 prefix header 檢視工程中使用的是哪個.pch檔案的路徑
(8)新增user-defined (unity_runtime_version版本號與匯出工程的unity版本號一致)
(9)將classes/main.mm全部內容複製到ios的main.m 並把ios中的main副檔名改為.mm, 修改如下**
然後要刪除classes/main.mm檔案
在ios的main.mm中做如下修改
//這裡關於window的初始化一定要寫
self
.window = [[uiwindow alloc] initwithframe:[uiscreen mainscreen].bounds];
self
.window
.backgroundcolor = [uicolor whitecolor];
secondhousetabbarcontroller * second = [[secondhousetabbarcontroller alloc]init];
self
.window
.rootviewcontroller = second;
self
[self
[self
.window makekeyandvisible];
return
yes;
} [self
} [self
} [self
} [self
} [self
}
(12)檔案重複的錯誤@inte***ce
(13)公升級到xcode8的時候,出現了問題 .o檔案的衝突(重複)
是因為 other link flage 中 寫了 -all-load 這個去掉就可以 了
(14)刪除main.storyboard
移除main inte***ce中的預設main
到此我的程式可以了,如果你的還有錯誤,就可以參考我的給出的參考文件。
並且其中乙個參考文件是有demo的。
後續再遇到什麼問題,在更新這篇文字吧。
藍色的是folder 黃色的是group。 那麼它們有什麼區別呢?
group 和 folder的區別
group 一般只在你的工程中是資料夾的形式,但是在本地的目錄中還是以散亂的形式放在一起的,除非你是從外部以group的形式引用進來的。參與編譯
folder 只能作為資源,整個引用進專案,不能編譯**,也就是說,以folder形式引用進來的檔案,不能被放在complie sources列表裡面。不參與編譯
U3D層的運用
layermask下面簡單說一下層的開關方法 1.首先引入 的概念 與 交集 10000001 10000100 10000000 或 並集 10000001 10000100 10000101 非 反轉 10000001 01111110 2.int mylayermask 1 curlayer ...
U3D層的運用
layermask下面簡單說一下層的開關方法 1.首先引入 的概念 與 交集 10000001 10000100 10000000 或 並集 10000001 10000100 10000101 非 反轉 10000001 01111110 2.int mylayermask 1 curlayer ...
u3d載入外部的c DLL
環境 window平台下,vs2017,unity2018.2 mac環境下操作差不多,此處就不寫了 一 封裝和載入純邏輯庫 和unity不相干 1 新疆乙個c 工程,因為我的unity提示要求在 編譯器 環境下只支援netframework3.5,所以這裡建立的時候我選擇了3.5版本 2 新增如下...