zoukankan      html  css  js  c++  java
  • 【Unity优化】资源管理系列05:AssetBundle 常见问题

    1、资源重复

    1)资源打包进哪个AB,由三种方式决定

    ① 在Editor中被明确指定AB名称:只打进指定名称AB中

    ② 通过BuildPipeline方法指定AB名称:只打进指定名称AB中,且覆盖方法①

    ③ 没有指定AB名称:任何引用该资源的AB包,都将包含一份该资源的复制

    2) 没有指定AB名称细节

    ① 资源的多份复制被打包进不同AB后,每份复制被视为不同的资源,各自具有单独的ID

    ② 缺点:加载包含相同资源的不同AB时,导致该资源占用多份内存空间

    3)解决方案

    ① 确保不同AB间没有依赖,把有依赖的资源打包进同一个AB。

    限制:产生大AB,一旦有资源要更新,就要更新整个AB;不适用于资源依赖较多的项目

    ② 确保依赖同一个资源的AB不会同时被加载。

    限制:适用于关卡类游戏;同样会产生大AB

    ③ 将被依赖的资源各自单独打包成AB。

    限制:能够完全避免资源重复,但是增加了维护复杂性,确保加载AB前加载好相关依赖

    4)编写Editor AB检测工具

    ① AssetDatabase.GetDependencies():获取资源的直接依赖

    ② AssetImporter:查找某个资源被分配给哪些AB

    2、图集重复

    0)一个图集(sprite atlas,SA)生成包含多个精灵对象(sprite object,SO)

    1)如果SO被分配给多个AB:SA不会被单独打包为AB,而是被复制多次打包进多个AB

    2)如果SO没有分配AB:SA也不会被单独打包为AB

    3)所有SO分配同一个AB:SA被单独打包为该AB

    3、安卓纹理

    1)安卓碎片化严重,因此纹理需要不同的压缩格式。

    2)所有安卓设备都支持 ETC1 纹理格式,但是该格式不支持透明通道。

    3)ETC2 格式支持透明通道,但是需要 OpenGL ES3 以上支持。

    4)针对不同的AB变体,更改导入器设置,打包不同的纹理格式。

    5)使用 SystemInfo.SupportsTextureFormat 获取平台支持的纹理压缩格式。

  • 相关阅读:
    ORACLE学习-1.过滤和排序
    Java-net.sf.json.JSONException: java.lang.reflect.InvocationTargetException处理方法之一
    ORACLE
    java日常-com.alibaba.fastjson快速处理json字符串转成list类型
    java日常-List、Map初始值
    javaScript中获取时间
    获取select的option值及其文本
    java日常-通过年月,获取到月的第一天和最后一天
    sybase powerdesigner 16.5注册码
    05-Docker私有仓库
  • 原文地址:https://www.cnblogs.com/hearthstone/p/13357878.html
Copyright © 2011-2022 走看看