首页 > 编程语言 > 详细

Unity资源Tree-AssetBundle内部细节

时间:2020-08-01 14:33:46      阅读:167      评论:0      收藏:0      [点我收藏+]

1 工具介绍

在Unity安装目录Editor\Data\Tools下有许多可用的命令行工具,这里介绍两个跟AssetBundle有关的工具!

1.1 WebExtract.exe

该工具可以将普通的AB解开为一个 CAB-<GUIDString> 的二进制文档;也可以将Scene的AB解开为 BuildPlayer-<SceneName> 和 BuildPlayer-<SceneName>.sharedAssets的二进制文档。BuildPlayer-<SceneName> 和 CAB-<GUIDString> 对应的就是 Profiler分析器 里面 Others/SerializedFile 里面的名字,还有一些后缀为 .resS 的文件。 用命令行操作一下

技术分享图片

得到三个版本信息和Size信息。然后会得到同目录下生成同名目录,里面是个二进制文件

技术分享图片

Size大小由AB包的header+chunk block+stream block组成。假如要加载一个AB内某个资源,要先读取header里该资源所在的chunk,然后再解压再加载。

技术分享图片

1.2 binary2text.exe

cmd命令:binary2text.exe inputbinaryfile [outputtextfile] [-detailed] [-largebinaryhashonly] [-hexfloat]

技术分享图片 带参数和不带参数,

outputtextfile命令可选,不写就在同目录

_detailed参数技术分享图片

_hexfloat参数能够准确显示Transform的浮点精度,假如一个prefab的transform某些数据变了打包的时候它的包体也会变!

技术分享图片  技术分享图片

2 AB包内部格式

技术分享图片

3 SerializedFile信息

AssetBundle的SerializedFile是包体的头信息,记录了一个包体加载出来所必须的重建信息。仅仅是从磁盘加载该包体的头信息。

影响内存SerializedFile大小的几项:

  • 每开一个Bundle就有一个固定的14k内存占用。
  • 包体TypeTree信息也有大小。
  • 一个包如果有外部引用,2018之前的版本会固定分配一个72k大小存储External References信息。
  • 一个包内的Objects数量大小也有关。

能做的事情就是DisableWriteTypeTree,然后更新版本。

Unity资源Tree-AssetBundle内部细节

原文:https://www.cnblogs.com/baolong-chen/p/13414296.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!