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,然后更新版本。

  • 相关阅读:
    .net core之上传文件的限制
    如何Telnet端口
    ES坑之logstash配置文件
    MySQL报错packets larger than max_allowed_packet are not allowed
    ES坑之安装
    ES坑之概述
    Git
    IDEA 搭建 maven(下)
    IDEA搭建maven(上)
    JDBC
  • 原文地址:https://www.cnblogs.com/baolong-chen/p/13414296.html
Copyright © 2011-2022 走看看