AB包
AB包全名AssetBundle(资源包),是一种Unity提供的用于存放资源的包,类似于压缩文件。它通过将资源分布在不同的AB包中可以最大程度地减少运行时的内存压力,并且可以有选择地加载内容,比如模型、贴图、预制体、音效、材质球等等。
如何将要打包成AssetBundle的资源设置AB包名字和变体名字呢?
AssetBundleName: 即是该资源要打包进哪个AB包里面,若多个资源的AssetBundleName相同(且变体名Variant也相同)则这些资源会被打包到同一个AB包里,换言之,这个AB包包含了多个资源。
AssetBundleName不能包含" . "这个特殊字符,会与variant产生冲突,使用/分隔符可以按层级建AB包,如AssetBundleName为A/B/C的AB包会被打包成A文件夹下的B文件夹下的名字为C的AB包
Variant: 类似后缀名的东西,称为变体,默认为.assetbundle,一般后缀大家都设置为.assetbunlde和.unity3d,那有人会用,这个有啥用。主要的用途应该用来做版本控制,即同种资源的不同形态下的加载,如不同语言包的同类型资源的加载,如可命名资源a的不同变体为a.cn,a.en等,根据不同的语言包加载不同的AB包。
AB包的分组方式
将哪些资源打包到一个AB包下是让人头疼的事情,就像你要把你的衣服放进衣柜里,总而言之就是整理的过程,而这种事情越早确定越好,到后期再更改就显得很麻烦。
Unity官方推荐的分类方式有以下几种:
1.按逻辑进行分类
即按该资源被哪个功能应用到,同种功能用到的资源打到一个AB包内,举个例子:
(1)将一个UI界面的所有图片纹理,布局文件打包到一个AB包
(2)将一个角色的所有动画,模型打包到一个AB包
(3)将一些公用的资源打包到一个AB包
2.按类型分类
将同一个类型下的资源打包到一个AB包中,举个例子:
(1)将Windows和Mac平台下使用到的不同Shader资源分类打包
(2)将不同版本的Unity AB包进行分类打包
3.同时使用的打包
即考虑到哪些AB包可能会在某个时间段一起使用,则打包到同一个AB包中,举个例子:
(1)某关卡下需要加载的所有资源一起打包
(2)某个场景下需要加载的所有资源,你应该尽可能将所有AB包依赖项都打包进来,避免加载其他依赖项
总的来说,没有最好的打AB包方式,只有最适合项目的打AB包方式。