【Unity优化】资源管理系列06:AssetBundle 变体与压缩

做用:针对不一样的运行时环境,使用不一样的内容。web

1、变体

一、使用举例

1)不一样目标平台,简化对应AB加载算法

举例:一个AB包含用于PC平台的高清纹理,另外一个AB包含用于安卓手机的低清纹理,可是他们使用相同的AB名和资源名,只有变体名不一样。因而在运行时,不须要更改加载代码,就能够加载对应的AB变体。网络

2)相同目标平台,根据不一样硬件规格,加载不一样AB性能

举例:不一样的硬件规格包括性能差别、屏幕宽高比、分辨率等。webgl

二、限制

1)不一样的变体必须对应不一样的资源线程

举例:就算一张纹理的两个变体只有压缩方式不一样,这张纹理也必须复制两份,各自单独设置变体名。内存

缺点:增长大型项目的资源管理复杂度;若是要更新,全部版本的资源都要更新,unity 没有提供直接的解决方案。资源

2)本身实现AB变体it

① 经过给资源名添加有意义的后缀,来识别特定的AB变体。打包

② 经过程序,根据后缀更改导入器的设置,或者更改预设上所挂载组件的参数。

2、是否压缩

一、是否压缩的对比

① 加载时间:从内存加载AB时,加载未压缩的比压缩的快。

② 打包时间:使用LZMA和LZ4格式压缩文件很慢;而Unity又是连续压缩AB,若是AB不少,压缩处理会占用很长时间。

③ 应用大小:压缩AB包将减小应用包大小。

④ 内存占用:使用LZ4压缩格式,或未压缩,内寸占用相对较少。

⑤ 下载时间:若是AB包较大,或用户网络带宽较小,建议压缩;若是AB包只有小几十兆,且用户网络带宽大,好比面向PC平台,则能够不压缩。

二、Crunch 压缩

若是AB中大部分是采用 Crunch 压缩算法压缩过的DXT纹理资源,则打包时不该该再被压缩(该算法应该也支持ETC格式,优势是压缩比高,缺点是压缩时间长)。

3、AB 与 WebGL

一、由于 WebGL 不支持工做线程,所以解压缩工做发生在主线程。

二、建议使用小尺寸AB包,缓解性能压力。

三、WebGL 只支持 LZ4压缩、未压缩资源。

相关文章
相关标签/搜索