美文网首页
AssetBundle

AssetBundle

作者: flynn | 来源:发表于2015-05-05 15:26 被阅读0次

    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)分离,不会有资源耦合重复打包的问题.但是需要自己管理资源.

    相关文章

      网友评论

          本文标题:AssetBundle

          本文链接:https://www.haomeiwen.com/subject/nnjifttx.html