编辑
2024-09-13
Unity
00

目录

AB包是什么
AB包的作用
打包说明
1.勾选标记资源
2.官方打包工具AssetBundle Browser
面板参数讲解
3.打包后生成的文件

AB包是什么

  • 特定于平台的资产压缩包,有点类似压缩文件
  • 能够压缩的资产包括:模型、贴图、预设体、音效、材质球等等

AB包的作用

  1. 减小安装包体积 —— 将资源按需拆分打包,避免所有资源都打进主包,减少初始安装包的大小;
  2. 动态的按需加载与卸载,减少运行时的内存 —— 通过AssetBundle可以在运行时从本地或服务器加载资源,并在不用时卸载释放内存;
  3. 热更新支持 —— 不需要重新打包整个应用,只需替换或下载新的AB包即可实现资源和脚本的更新

打包说明

1.勾选标记资源

选中资源,在它的Inspector窗口底部,可以将当前资源加入某个标签或新建一个标签,标签的名字就是AB包的名字,这里的包名是强制小写的

image.png

image.png

2.官方打包工具AssetBundle Browser

AB包打包工具可以通过编辑器扩展自己写一个,调用AB包相关的API即可。在这里我直接使用官方的省事;

面板参数讲解

  1. Configure

    显示当前所有的标签和对应有哪些资源,如图,model包中包含一个Cube资源,一目了然 image.png

  2. Build
    image.png

    • BuildTarget:目标平台
    • Output Path:目标输出路径
    • Clear Folders:是否清空文件夹 重新打包
    • Copy To StreamingAssets:是否拷贝到StreamingAssets
    • Compression
    • NoCompression
      • 不压缩,解压快,包较大 不推荐
    • LZMA
      • 压缩最小,解压慢
      • 缺点:用一个资源 要解压所有
    • LZ4
      • 压缩,相对LZMA大一点点
      • 建议使用,用什么解压什么,只解压你所需要的,内存占用低
    • ETI
      • 在资源包中 不包含资源的类型信息
    • FR
      • 重新打包时需要重新构建包,和ClearFolders不同,它不会删除不再存在的包
    • ITTC
      • 增量构建检查时,忽略类型数的更改
    • Append Hash
      • 将文件哈希值附加到资源包名上
    • SM
      • 严格模式,如果打包时报错了,则打包直接失败无法成功
    • DRB
      • 运行时构建
  3. Inspect

    主要是可视化的查看AB包中的详细信息 image.png

3.打包后生成的文件

跳转到打包后的输出路径,查看文件夹下的内容

image.png

  • model:这是AB包文件,也就是我们刚刚定义的AB包,包名字就叫model
  • ios:这个和输出路径的同名文件,是AB包的主包,它是AssetBundle主清单文件,包含了所有被打包的 AssetBundle 名称,以及它们之间的依赖关系
  • .manifest:每个AB包都会生成一个.manifest文件,用于描述对应的AB包的信息,主要记录,可以直接双击打开查看: image.png 主要包含以下几个部分:
    1. 版本校验
      • 包含 Hash 值和 CRC 校验码,用于比对更新和校验下载是否完整
      • ManifestFileVersion:说明 manifest 文件的版本号;
      • CRC:资源包的 校验码(循环冗余校验),运行时可用来检测资源是否损坏;
      • 哈希相关:
        • AssetFileHash:AB 文件整体的哈希,用于版本对比和一致性校验;
        • TypeTreeHash:类型树(TypeTree)的哈希,确保序列化结构一致,避免不同 Unity 版本序列化格式不兼容;
        • IncrementalBuildHash:增量构建时使用的哈希,判断是否需要重新打包
        • HashAppended:标志位,说明是否在 AB 包文件结尾附加了 Hash 信息(一般是 0 或 1);
    2. 类型信息
      • ClassTypes:列出 AB 包里包含的 Unity 对象类型,以 Class ID 表示
      • 比如:Class: 1 → GameObject;Class: 4 → Transform;Class: 33 → MeshRenderer
      • SerializeReferenceClassIdentifiers:用于记录 SerializeReference 序列化的自定义类标识符(如果没有就为空数组)
    3. 资源内容
      • 显示该 AB 包中具体包含的资源路径
    4. 资源依赖
      • Dependencies数组中包含相关资源依赖

本文作者:xuxuxuJS

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!