首页 > 编程语言 > 详细

【Unity优化】资源管理系列05:AssetBundle 常见问题

时间:2020-07-22 00:56:19      阅读:91      评论:0      收藏:0      [点我收藏+]

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

【Unity优化】资源管理系列05:AssetBundle 常见问题

原文:https://www.cnblogs.com/hearthstone/p/13357878.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!