做用:针对不一样的运行时环境,使用不一样的内容。web
1)不一样目标平台,简化对应AB加载算法
举例:一个AB包含用于PC平台的高清纹理,另外一个AB包含用于安卓手机的低清纹理,可是他们使用相同的AB名和资源名,只有变体名不一样。因而在运行时,不须要更改加载代码,就能够加载对应的AB变体。网络
2)相同目标平台,根据不一样硬件规格,加载不一样AB性能
举例:不一样的硬件规格包括性能差别、屏幕宽高比、分辨率等。webgl
1)不一样的变体必须对应不一样的资源线程
举例:就算一张纹理的两个变体只有压缩方式不一样,这张纹理也必须复制两份,各自单独设置变体名。内存
缺点:增长大型项目的资源管理复杂度;若是要更新,全部版本的资源都要更新,unity 没有提供直接的解决方案。资源
2)本身实现AB变体it
① 经过给资源名添加有意义的后缀,来识别特定的AB变体。打包
② 经过程序,根据后缀更改导入器的设置,或者更改预设上所挂载组件的参数。
① 加载时间:从内存加载AB时,加载未压缩的比压缩的快。
② 打包时间:使用LZMA和LZ4格式压缩文件很慢;而Unity又是连续压缩AB,若是AB不少,压缩处理会占用很长时间。
③ 应用大小:压缩AB包将减小应用包大小。
④ 内存占用:使用LZ4压缩格式,或未压缩,内寸占用相对较少。
⑤ 下载时间:若是AB包较大,或用户网络带宽较小,建议压缩;若是AB包只有小几十兆,且用户网络带宽大,好比面向PC平台,则能够不压缩。
若是AB中大部分是采用 Crunch 压缩算法压缩过的DXT纹理资源,则打包时不该该再被压缩(该算法应该也支持ETC格式,优势是压缩比高,缺点是压缩时间长)。
一、由于 WebGL 不支持工做线程,所以解压缩工做发生在主线程。
二、建议使用小尺寸AB包,缓解性能压力。
三、WebGL 只支持 LZ4压缩、未压缩资源。