一、AB包的基础概念
以下引用自Unity官方手册:
AssetBundle
AssetBundle 是一个存档文件,包含可在运行时由 Unity 加载的特定于平台的非代码资源(比如模型、纹理、预制件、音频剪辑甚至整个场景)。AssetBundle 可以表示彼此之间的依赖关系;例如,一个 AssetBundle 中的材质可以引用另一个 AssetBundle 中的纹理。为了提高通过网络传输的效率,可以根据用例要求(LZMA 和 LZ4)选用内置算法选择来压缩 AssetBundle。
AssetBundle 可用于可下载内容(DLC),减小初始安装大小,加载针对最终用户平台优化的资源,以及减轻运行时内存压力。
注意: AssetBundle 可以包含代码对象实例的序列化数据,例如 ScriptableObject。但是,类定义本身被编译为项目程序集之一。当您在 AssetBundle 中加载序列化对象时,Unity 会找到匹配的类定义,创建它的实例,并使用序列化值设置该实例的字段。这意味着您可以在 AssetBundle 中向游戏中引入的新项,只要这些项不需要对您的类定义进行任何更改。
AssetBundle 中有什么?
“AssetBundle”可以指两种不同但相关的东西。
首先是磁盘上的实际文件。这称为 AssetBundle 存档。AssetBundle 存档是一个容器,就像文件夹一样,可以在其中包含其他文件。这些附加的文件包含两种类型:
- 一个序列化文件,其中包含分解为各个对象并写入此单个文件的资源。
- 资