什么是AB包:它是一个存在于硬盘上的文件,可以称为压缩包,这个压缩包可以是一个文件夹。
AB包的作用:将资源放到服务器上,当客户端需要的时候从服务器中获取,程序不需要重新安装。
AB包定义:Unity资源压缩包。
AB包依赖的资源:图片,文本,音频,视频,模型,动画,预制体,场景资源,脚本,可编辑脚本资源。
-
图片支持的格式:.png,.jpg。
-
文本支持的格式:.txt,.json,.xml。
-
音频支持的格式:.mp3,.wav,.ogg。
-
视频支持的格式:.avi,.mp4。
-
模型支持的格式:.fbx,.obj。
-
动画支持的格式:.animationClip(fbx内部动画片段)。
-
预制体支持的格式:配置文件(包含当前游戏物体所依赖的所有组件信息)。
-
场景资源支持的格式:配置文件(包含当前场景中所有物体的配置信息)。
-
脚本支持的格式:C#脚本。
-
可编辑脚本资源:.asset文件。
压缩包可以使用LZMA和LZ4压缩算法,较少包大小,更快的进行网络传输。
压缩后的资源不能直接使用,需要进行解压。
把一些要下载的内容放到AB包中可以减少安装包的大小。
资源冗余:多个包引用同一个资源但引用的资源没有打入AB包。
颗粒度:颗粒度太大会导致不太容易替换资源,过度消耗存储性能,颗粒度太小会导致降低IO读写速度,影响用户体验。
打包策略
- 可以将资源分的很细进行打包,基于每个资源都打一个AB包。
- 一个模块打一个AB包,可以基于文件夹进行打包。
打出来的文件
AB文件
- CRC 资源校验
- AssetBundleInfos 当前打出的所有的资源包
其他AB配置文件(一个命名一个AB包)
- CRC 资源包校验码,资源包的唯一ID。
- Hash 每次生成的资源包都会生成一个哈希值,用于做资源包的对比。
- Asset 打入当前AB包中的所有的资源。
注意:
- AB包的路径是小写。
- 不标记AssetBundle是不会打到AB包中,标记相同的AssetBundle将会打到一个AB包中。
- 多个AB包都依赖的资源一定要进行打包。(模型A和模型B依赖材质C,模型A和模型B不在同一个AB包内
模型A和模型B进行打包,材质C没有进行打包,会导致模型A的AB包内出现材质C,模型B的AB包内出现材质C,下载的资源将会增大。
模型A和模型B进行打包,材质C单独进行打包,模型A的AB包和模型B的AB包对材质C的AB包产生依赖关系,加载模型A的时候是要加载模型A所在的资源包和材质C所在的资源包,不会导致下载资源增加。
模型A和模型B进行打包,材质C和模型A打到了一个AB包内,模型B所在的AB包会和材质C所在的AB包产生依赖关系,加载模型B的时候是需要加载模型B所有的资源包和材质C所在的资源包,不会导致下载资源增加。) - 要打包的资源是需要设置后缀名的。