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 获取平台支持的纹理压缩格式。

  • 相关阅读:
    Flink 源码解析 —— 深度解析 Flink 序列化机制
    Flink Metrics 源码解析
    Flink 源码解析 —— JobManager 处理 SubmitJob 的过程
    vue封装插件并发布到npm上
    vue+ivew-admin开发项目,内存占用过大解决办法
    Vue-cli 2.9 多页配置及多页面之间的跳转问题
    vuex2.0 基本使用(3) --- getter
    vuex2.0 基本使用(2) --- mutation 和 action
    vuex2.0 基本使用(1) --- state
    如何新建仓并 上传本地新的项目
  • 原文地址:https://www.cnblogs.com/hearthstone/p/13357878.html
Copyright © 2011-2022 走看看