zoukankan      html  css  js  c++  java
  • Unity资源Tree-AssetBundle内部细节

    1 工具介绍

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

    1.1 WebExtract.exe

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

    image_thumb[2]

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

    image_thumb[4]

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

    image

    1.2 binary2text.exe

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

    image_thumb[30] 带参数和不带参数,

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

    _detailed参数image_thumb[29]

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

    image  image

    2 AB包内部格式

    image

    3 SerializedFile信息

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

    影响内存SerializedFile大小的几项:

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

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

  • 相关阅读:
    线性代数思维导图——3.向量
    微分中值定理的基础题型总结
    构造函数
    Python课程笔记(七)
    0241. Different Ways to Add Parentheses (M)
    0014. Longest Common Prefix (E)
    0013. Roman to Integer (E)
    0011. Container With Most Water (M)
    0010. Regular Expression Matching (H)
    0012. Integer to Roman (M)
  • 原文地址:https://www.cnblogs.com/baolong-chen/p/13414296.html
Copyright © 2011-2022 走看看