分享一些Unity資源修改中的一些問題
本篇文章我將分享一些個(gè)人在修改ab包上的的心得。
1.修改ab包后,相比原來的包,體積大了很多。
一般來講,ab都是經(jīng)過壓縮的,在使用UABE時(shí)首先會(huì)把a(bǔ)b包解壓,之后的修改都是針對(duì)解壓后的ab包。
UABE的保存默認(rèn)是不會(huì)壓縮的,如果要想把a(bǔ)b的體積縮小,就需要用UABE進(jìn)行壓縮功能。
拓展一點(diǎn)壓縮知識(shí)
unity的ab包有兩種方式,分別是lzma和lz4。
lzma的優(yōu)點(diǎn)是壓縮率高,缺點(diǎn)是加載速度極慢,還會(huì)占用較大內(nèi)存。
lz4的優(yōu)點(diǎn)是加載速度快,相比lzma內(nèi)存占用低,缺點(diǎn)是壓縮率一般。
如何選擇呢?根據(jù)我的經(jīng)驗(yàn),無腦lz4就行。
使用lzma有些ab包體積太大的話,游戲加載會(huì)非常慢,跟lz4相比會(huì)相差好幾個(gè)數(shù)量級(jí)的時(shí)間。

2.在替換字符集時(shí)可能會(huì)出現(xiàn)的問題(TextMeshPro)
先大致講一下流程:
1.定位3個(gè)文件(Monobehaviour,對(duì)應(yīng)的字符圖集,對(duì)應(yīng)的Material材質(zhì))
2.確定指針,Monobehaviour中包含的指針信息需要記錄,字符生成信息,需要稍微有點(diǎn)印象。
Material中的指針需要記錄。
3.用對(duì)應(yīng)版本的unity生成字符集,打包成ab包
4.針對(duì)生成的字符集重復(fù)1步驟,修改Monobehaviour中的所有指針和Material中的指針。
5.將修改好的后Monobehaviour,字符圖集,Material,導(dǎo)入。

問題1:上面的流程走完后,運(yùn)行游戲,游戲直接報(bào)錯(cuò)。
重新檢查指針,是否所有指針都已經(jīng)修改到位。
問題2:游戲能運(yùn)行,字體也顯示了,但是字體背景中有其他字的黑色陰影。
檢查Material是否替換,檢查Material中的指針是否全部修改到位。
問題3:字體成功顯示,但是顯示的字周圍出現(xiàn)了其他字的邊角。
生成字體時(shí)的padding太小
問題4:字體成功顯示,顯示的字體都有白底。
生成字體過大(如2048*2048的圖集,里面只有幾個(gè)字并占滿整個(gè)圖集)。

3.Unitypy打包體積較大ab包中遇到的問題,ab包未壓縮狀態(tài)超2g和超4g(以后可能會(huì)修復(fù))
如果一個(gè)ab包解壓后超過4g,Unitypy只能加載,無法重新打包,打包時(shí)會(huì)報(bào)錯(cuò)。
如果一個(gè)ab包解壓后超過2g,Unitypy無法用lz4壓縮,壓縮會(huì)報(bào)錯(cuò)。
具體原因:作者代碼偷懶,有能力可以自行修復(fù)
小提醒:未壓縮狀態(tài)如果超4g,需要確認(rèn)內(nèi)存是否有16g以上,并且設(shè)置足夠大的虛擬內(nèi)存。否則包在加載過程中內(nèi)存溢出就會(huì)報(bào)錯(cuò)。