unity與iOS合并

關(guān)于unity導(dǎo)出工程與已有iOS工程合并網(wǎng)上面已經(jīng)有很多的教程,但是還是要記錄一下自己的經(jīng)歷過(guò)程。從最基本的說(shuō)明,面對(duì)剛接觸unity的小白,力求大家看到過(guò)后一次性合并成功。所用unity版本5.3.5p8(沒(méi)什么關(guān)系),xcode版本7.3.1


再說(shuō)一遍新版的 unity 和 xcode 不需要?jiǎng)h除下面說(shuō)的一些文件引用。直接引用就好了,而且好像也沒(méi)辦法批量刪除部分文件引用。??(unity 2017版的沒(méi)試過(guò))


? ? ? ?看到很多人問(wèn)我怎么配置不成功啊,這里、那里錯(cuò)?。我都暈了,現(xiàn)在說(shuō)一下啊,我上面已經(jīng)全說(shuō)了,再配置不成功的話,可以參開(kāi)我的 配置demo,里面的 unity 文件我已經(jīng)移除,下載過(guò)來(lái)以后要按照要求將你的 unity 文件移進(jìn)去,并修改少量代碼,就可以了,報(bào)錯(cuò)的話下面有部分解決方案。(新版最好直接將之前的文件刪除(刪到垃圾推里),重新添加文件)


配置下載鏈接這個(gè)是我的網(wǎng)盤鏈接鏈接,大家可以下載,我也傳到cocoachina 上面了,不過(guò)要審核。


1,怎么導(dǎo)出unity的iOS工程

- 1.1首先在unity打開(kāi)unity工程,然后點(diǎn)擊file->buld setting

準(zhǔn)備導(dǎo)出開(kāi)始


- 1.2 然后在彈框出來(lái),如果當(dāng)前默認(rèn)不是iOS平臺(tái)就切換到iOS平臺(tái)。確認(rèn)平臺(tái)以后就點(diǎn)擊player setting按鈕,進(jìn)入具體的配置界面。

平臺(tái)切換

- 1.3 進(jìn)入具體設(shè)置Other Settings,圖上面畫的就是設(shè)置的東西,il2cpp這個(gè)不要忘了設(shè)置,還有運(yùn)行方式,最低版本支持。設(shè)置完成直接building導(dǎo)出。

基本配置

- 還有一個(gè)問(wèn)題就是游戲開(kāi)發(fā)的時(shí)候(雖然我不是做游戲開(kāi)發(fā)的)的可能會(huì)碰到關(guān)于AOT的問(wèn)題,其實(shí)就是在這個(gè)位置設(shè)置好就行了,具體的網(wǎng)上都有,直接搜索AOT引起的crash就找得到,雖然沒(méi)解決我的問(wèn)題。

AOT-crash


2,開(kāi)始進(jìn)行導(dǎo)入工程前的準(zhǔn)備

打開(kāi)unity已經(jīng)導(dǎo)出的工程,看看里面的庫(kù)是否是支持目前版本的庫(kù),然后再運(yùn)行一下,基本是不會(huì)出問(wèn)題的。如果出現(xiàn)錯(cuò)誤的話應(yīng)該是需要把encode設(shè)置為no,還有在building setting上設(shè)置新的編譯參數(shù)

添加設(shè)置

如果unity導(dǎo)出的工程可以完整的在模擬器或者真機(jī)上運(yùn)行,那么這個(gè)導(dǎo)出的工程上的配置就是對(duì)的,然后可以在需要導(dǎo)到目標(biāo)工程里面進(jìn)行copy UNITY里面的設(shè)置。

3,開(kāi)始導(dǎo)入unity工程


選中需要用的資源文件

- 3.1 在unity導(dǎo)出的工程中,選中這些資源文件,并將其拷貝到目標(biāo)工程所在目錄

拷貝到目標(biāo)工程所在目錄

- 3.2然后打開(kāi)目標(biāo)工程,開(kāi)始添加文件引用,添加的方式不一樣,Class和Libraries文件夾用Create Groups,而Data用Create folder.. ,不要選錯(cuò)

添加后的樣子

這個(gè)大家要注意啊::::?。。?!


# Classes 的 Native在移到工程中的時(shí)候可能會(huì)缺少部分文件,Classes文件從導(dǎo)出的工程復(fù)制粘貼到自己的項(xiàng)目會(huì)少文件,這個(gè)很坑。

新版的的 unity 好像沒(méi)有 MapFileParser 這個(gè)文件,這沒(méi)關(guān)系的。



4 添加完成后,開(kāi)始刪除一部分引用(不是直接刪除啊),后面所有的刪除都是刪除引用。

###(新版本不刪除引用?。。。ㄎ液竺嬗玫?.5.1f1))

- 4.1先刪除引用libraries里面的libil2cpp文件夾,然后再刪除Classes里面的Native文件夾里面的所有.h文件

.h刪除

?- 4.2然后再將classes里面的main.mm文件內(nèi)容全部拷到自己原有的main.m文件中再刪除引用,并將AppControllerClassName后面修改成AppDelegate,自己修改 main.m->main.mm。將.pch文件里面的東西放到自己的pch文件中或者就用它的也可以,并添加#import"UnityAppController.h",但是pch文件路徑別忘了添加。

pch文件
修改main.mm

- 4.3如果出現(xiàn)一些運(yùn)行報(bào)錯(cuò)那就把//UIApplicationMain(argc, argv, nil, [NSString stringWithUTF8String:AppControllerClassName]);替換掉。

- 4.4然后就是點(diǎn)擊工程進(jìn)入設(shè)置界面,主要設(shè)置的地方有三個(gè),怎么設(shè)置參考導(dǎo)出的unity工程。。。

位置

第一個(gè)主要是庫(kù)的添加,第二個(gè)是一系列的配置,最好要完全copy里面的設(shè)置(看清楚瞪大眼睛,里面的引用資源路徑別寫錯(cuò)了?。┖?jiǎn)略的寫寫,照著unity導(dǎo)出的工程配置就可以了。


資源路徑


這個(gè)一定要有的

第三個(gè)是一個(gè)run


添加run


- 4.5這樣配置完了,command+b編譯時(shí)在 UnityAppViewcontroller 里面應(yīng)該會(huì)出現(xiàn)不識(shí)別UnityViewControllerBase,把它直接改成UIViewController。

然后在AppDelegate中添加


AppDelegate.h


AppDelegate.m


.m

- 4.6這里寫完后在UnityAppController.h里面修改


修改UnityAppController

5,啟動(dòng)unity界面了

- 在需要啟動(dòng)的界面調(diào)用

#進(jìn)入調(diào)用。

[(AppDelegate*)[UIApplicationsharedApplication].delegate ?showUnityWindow];//啟動(dòng)

UnityPause(false);

#退出調(diào)用。(退出時(shí)用 unity 內(nèi)部自己寫的腳本調(diào)用外部自定義的 C 方法,將下面的代碼放進(jìn)去。不會(huì)的話就去搜?。。。?/p>

[(AppDelegate*)[UIApplicationsharedApplication].delegate ?hideUnityWindow];//隱藏

UnityPause(true);


就可以啟動(dòng)unity了。

添加一個(gè)陀螺儀腳本,使用這個(gè)腳本后在unity 里面有很棒的效果,制作的 GIF 圖看著有點(diǎn)卡,其實(shí)很流暢的哦:

陀螺儀腳本


寫到最后終于寫完了,主項(xiàng)目里面的設(shè)置要參考unity導(dǎo)出的工程設(shè)置。

啟動(dòng)問(wèn)題:

因?yàn)榧虞d方式的原因,導(dǎo)致APP 整體啟動(dòng)速度較慢,內(nèi)存峰值上升較快,所以設(shè)置了自己主動(dòng)觸發(fā) unityController 的啟動(dòng)。這次改動(dòng)是將之前在 didFinishLaunching里面的啟動(dòng)代碼放到 showUnityWindow里面,其他保持不變。目前 unity 資源占用問(wèn)題讓 unity 工程師做,加載空的 unity 場(chǎng)景增加內(nèi)存只有15M 左右(已測(cè)試,退出時(shí)切換到空的場(chǎng)景可以大幅減少占用內(nèi)存),另外壓縮圖片大小可以大度降低內(nèi)存占用量。

解決 unity 內(nèi)存占用問(wèn)題也可以參考:Unity 3D 內(nèi)存太大問(wèn)題解決方案

代碼如下:


報(bào)錯(cuò)問(wèn)題:

?1,一些 cpp 文件之類的找不到,應(yīng)該是資源路徑不對(duì),或者文件丟失,去 finder 里面看一哈。

2,F(xiàn)unctions that differ only in their return type cannot be overloaded

? ? ? ? 》解決辦法:Enable Strict Checking of objc_msgSend Calls改為NO

3,__weak typeof(self)wSelf = self報(bào)錯(cuò):- A parameter list without types is only allowed in a function definition. A corresponding warning tells me that __weak only applies to Objective-C object or block pointer types;type here is 'int'

? ? ?》解決辦法:Xcode-> Build Settings-> C Language Dialect修改配置,C99改為GNU99,C99是不包含typeof的

4,cString報(bào)錯(cuò)

報(bào)錯(cuò)詳情

? ? ? 》解決辦法:Setting "Always Search User Paths" to "No" in the project settings fixed the build issues.

5,dyld: Symbol not found: _AbstractEventData_Reset_m15186946類似于這種錯(cuò)誤

》 1):我是之前融合了簡(jiǎn)單的unity導(dǎo)出工程OK的情況下,再次融合新版的導(dǎo)出工程時(shí)報(bào)的錯(cuò)誤(我的再次融合方式是,直接替換之前導(dǎo)入的資源文件),可能是工程里面引用到的某個(gè)方法或者文件和之前的不同,所以簡(jiǎn)單的替換資源文件導(dǎo)致出現(xiàn)的dyld: Symbol not found錯(cuò)誤情況,大家如果出現(xiàn)這種錯(cuò)誤可以試試,不需要更改之前的配置,只需要?jiǎng)h除之前老的資源文件(在 xcode 里面刪除引用),重新引入最新的資源文件。

? 》2):可能是一些資源Framework設(shè)置不是optional

后期添加的:只能幫到這了,畢竟我也好久沒(méi)在做這方面的了。

- 其他整合交互方案看-》www.itdecent.cn/p/db88ffd57168

- 如果遇到動(dòng)畫消失-》www.itdecent.cn/p/baabd47434ca

- 如果實(shí)用 easyAR 遇到黑屏-》www.itdecent.cn/p/f98bcfe09dc7

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,544評(píng)論 19 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,979評(píng)論 25 709
  • 米蘭退出了L.L魔法社團(tuán),她覺(jué)得心情很沉重。為什么沒(méi)有人相信她呢? 這幾天,米蘭面如灰土,極力的挽回一切??擅看味?..
    Melany閱讀 213評(píng)論 0 0
  • 院子里的小草綠了 園子里的桃花開(kāi)了 馬路邊的樹苗也長(zhǎng)芽了 天空中不時(shí)有小鳥飛過(guò) 偶爾會(huì)嘰嘰喳喳地叫個(gè)不停 像是在唱...
    大漠郡主閱讀 595評(píng)論 0 1
  • 上周末聽(tīng)葉武濱老師講易效能時(shí)間管理2階課,最后一段是關(guān)于生命力,其中一節(jié)講到他和兒子到美國(guó)的某個(gè)城市旅游,那個(gè)城市...
    王二王婆閱讀 744評(píng)論 2 5

友情鏈接更多精彩內(nèi)容