zoukankan      html  css  js  c++  java
  • 【Unity优化】资源管理系列06:AssetBundle 变体与压缩

    作用:针对不同的运行时环境,使用不同的内容。

    一、变体

    1、使用举例

    1)不同目标平台,简化对应AB加载

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

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

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

    2、限制

    1)不同的变体必须对应不同的资源

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

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

    2)自己实现AB变体

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

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

    二、是否压缩

    1、是否压缩的对比

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

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

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

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

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

    2、Crunch 压缩

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

    三、AB 与 WebGL

    1、因为 WebGL 不支持工作线程,因此解压缩工作发生在主线程。

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

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

  • 相关阅读:
    struts2中<s:select>标签的使用
    正则表达式(括号)、[中括号]、{大括号}的区别小结
    解读邮箱正则表达式:^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$
    Struts2国际化-getText()方法
    Eclipse的Tomcat热部署,免重启的方法
    hdu 5056Boring count
    纸板上的虚拟现实和代码中的Cardboard
    OC-Protocol实现业务代理
    UVA 11237
    mysql相关日志汇总
  • 原文地址:https://www.cnblogs.com/hearthstone/p/13357883.html
Copyright © 2011-2022 走看看