
Unity-AssetBundle原理
一、引言 AssetBundle(简称 AB 包)是 Unity 资源管理的基石。理解它的底层原理,是掌握后续所有资源管理方案(包括 Addressables 和 YooAsset)的前提。 AssetBundle 是 Unity 提供的一种将资源打包成自定义格式文件的机制。通过它,开发者可以把资源从游戏安装包中分离出来,实现按需加载、热更新、资源共享等功能。Unity 从 5.x 起提供了较完善的 AssetBundle 打包与加载 API。 它的核心价值在于将资源与代码分离,使资源可以在运行时动态加载和卸载。对于体量较大的项目尤为重要:把资源拆成多个小包,按游戏进度按需加载,从而控制安装包体积和运行时内存占用。 二、AssetBundle 内部结构 2.1 文件结构(UnityFS 格式) 现代 Unity 使用的 AB 文件格式标识为 UnityFS。一个 AB 文件在磁盘上大致分为如下几部分: AssetBundle 文件(UnityFS) ├── Header(文件头) │ ├── 签名(Signature):"UnityFS" │ ├── 格式版本(Format Version) │ ├── Unity 版本 / 生成版本字符串 │ ├── 文件总大小 │ ├── 压缩后 / 压缩前 BlocksInfo 大小 │ └── 压缩标志(LZMA / LZ4 / 无压缩) ├── BlocksInfo & DirectoryInfo(块与目录信息,通常单独压缩) │ ├── 数据块(Block)列表:每块的压缩/解压大小、压缩方式 │ └── 目录(Node)列表:内部文件名、offset、size、flags └── Data(数据块) ├── CAB-xxxxx(SerializedFile:序列化对象数据 + TypeTree) └── CAB-xxxxx.resS / .resource(Texture、Mesh、Audio 等原始二进制) 各部分说明: ...