赞
踩
https://blog.csdn.net/qq_19269527/article/details/86366467
AssetBundle是一种资源压缩包。资源打包AssetBundle有两个好处:
AssetBundle分为两种类型:场景AssetBundle & 非场景AssetBundle。
2.1 AssetBundle由两部分组成:Header和Data。
非场景AssetBundle结构:
场景AssetBundle结构:(PreloadData,AssetBundle应该是在Shared data中,更多的Objects在SerializedFile中)
全局光照数据(Global Illumination Data)
SerializedFile中记录着重建资源所需的信息。
Profiler中SerializedFile的大体组成如下:
2.2 经过压缩后的AssetBundle:
采用压缩(LZMA,LZ4)的AssetBundle数据段的格式:
图中压缩部分表示可有块压缩(chunk-based)、流压缩(stream-based)两种方式。流压缩(LZMA)在处理整个数据块时使用同一个字典,它提供了最大可能的压缩率但只支持顺序读取。块压缩(LZ4)指的是原始数据被分成大小相同的子块并单独压缩。如果你想要实时解压/随机读取开销小,则应该使用这种。
Unity安装包中有两个工具,可反编译已打包的AssetBundle
1.WebExtrct
可查看AssetBundle信息,如上图,可查看AssetBundle版本,大小。同时得到一个16进度文本。
2.binary2text 进一步处理上一步的16进度文本。
size = AssetBundle中某个资源的大小
1. External References = 有其他AssetBundle引用,列在此处。
2. m_Container = AssetBundle文件中的所有资源。
3. 加载某个资源,需要依赖的资源在m_PreloadTable中查找
PS:LoadAsset 传入string,去m_Container中,然后Preload中查找依赖的的资源。组成需要的资源,返回需要的资源。
AssetBundle构建出现差异,但是上边的16进度文本一致。float精度不够造成的。可用-hexfloat对比前后两个版本的Assetbundle。
参考:
https://docs.unity3d.com/Manual/ClassIDReference.html
https://www.cnblogs.com/pinkfloyd/p/6489979.html
https://blog.csdn.net/qq_35361471/article/details/82854560
https://www.youtube.com/watch?v=mMjcDjM8Fm8
https://blog.csdn.net/lodypig/article/details/51863683
————————————————
版权声明:本文为CSDN博主「此处有码」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_19269527/article/details/86366467
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。