AssetBundle

AssetBundle(Unity3D)

  • NGUI
  1. 一般NGUI的會做成預制的形式,也就是預設上關聯了圖集,紋理,字體,shader以及腳本,如果只是單純的把一個預制打包成AssetBundle,會出現嚴重的資源重復問題.因為本身預制只是YAML格式,體積很小.所以我想把預制中資源全部提取出來.首先看體積大對象,紋理和圖集還有字體.可以在打包的腳本中克隆原有的預制(保證原預制是完好的),然后去除預制中所有的資源依賴(可以寫遞歸獲取UIWidget去除引用即可).然后使用克隆出來的臨時預制打包成AssetBundle,這樣預制的大小幾KB到幾十KB.這樣的預制只關聯自己本身對資源私有的數據.
  1. 然后我們來處理預制中的關聯信息, 一個UI預制可能包含很多Atlas,Texture,Font.可以再第一步去依賴時記錄所有的資源依賴保存在文本中.
    1.AssetConfig 資源列表. {資源ID : 資源信息}
"29310":{"assetID":29310,"assetType":2,"assetName":"bg","assetMd5":"cedfc349e3955464aaf476a6c5e63686"}

2.NGUIDependency NGUI依賴信息{ 預制資源ID : {依賴信息} , {依賴信息} }

"-165308":[{"type":2,"InstanceID":29310},{"type":2,"InstanceID":29330}]

3.NGUIMap NGUI預制關聯信息( 所有資源都是在AssetConfig里面 , 但是資源ID不直觀, 所有用名稱來關聯資源ID)

"Login_Main":-165308

這樣做優點在于資源和配置信息(prefab)分離,不會有資源耦合重復打包的問題.但是需要自己管理資源.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容