AssetBundle(Unity3D)
- NGUI
- 一般NGUI的會(huì)做成預(yù)制的形式,也就是預(yù)設(shè)上關(guān)聯(lián)了圖集,紋理,字體,shader以及腳本,如果只是單純的把一個(gè)預(yù)制打包成AssetBundle,會(huì)出現(xiàn)嚴(yán)重的資源重復(fù)問題.因?yàn)楸旧眍A(yù)制只是YAML格式,體積很小.所以我想把預(yù)制中資源全部提取出來.首先看體積大對象,紋理和圖集還有字體.可以在打包的腳本中克隆原有的預(yù)制(保證原預(yù)制是完好的),然后去除預(yù)制中所有的資源依賴(可以寫遞歸獲取UIWidget去除引用即可).然后使用克隆出來的臨時(shí)預(yù)制打包成AssetBundle,這樣預(yù)制的大小幾KB到幾十KB.這樣的預(yù)制只關(guān)聯(lián)自己本身對資源私有的數(shù)據(jù).
- 然后我們來處理預(yù)制中的關(guān)聯(lián)信息, 一個(gè)UI預(yù)制可能包含很多Atlas,Texture,Font.可以再第一步去依賴時(shí)記錄所有的資源依賴保存在文本中.
1.AssetConfig 資源列表. {資源ID : 資源信息}
"29310":{"assetID":29310,"assetType":2,"assetName":"bg","assetMd5":"cedfc349e3955464aaf476a6c5e63686"}
2.NGUIDependency NGUI依賴信息{ 預(yù)制資源ID : {依賴信息} , {依賴信息} }
"-165308":[{"type":2,"InstanceID":29310},{"type":2,"InstanceID":29330}]
3.NGUIMap NGUI預(yù)制關(guān)聯(lián)信息( 所有資源都是在AssetConfig里面 , 但是資源ID不直觀, 所有用名稱來關(guān)聯(lián)資源ID)
"Login_Main":-165308
這樣做優(yōu)點(diǎn)在于資源和配置信息(prefab)分離,不會(huì)有資源耦合重復(fù)打包的問題.但是需要自己管理資源.