博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
巧用UWA资源检测,轻松剔除冗余资源!
阅读量:6815 次
发布时间:2019-06-26

本文共 1554 字,大约阅读时间需要 5 分钟。

我们在实际项目开发流程中,总会出现一些仅凭经验难以预料的意外情况,即使是老练的开发者,没有工具协助,仅凭个人直觉也很难察觉;即使是磨合完善的项目组,也难以兼顾各个成员的工作流程。除此之外,有很多原本性能优越的制作方式,可能在一次两次Unity版本升级后,变得不再适用。因而定期使用优化检查工具进行追踪,对于保证项目质量是非常必要的。

而一套能够快速对项目进行优化检查的工具,可以帮助项目组跳过工作流程本身,直接基于反馈的质检结果对关键点进行优化,达到快速提高项目性能的目的。

UWA提供的AssetBundle资源检测功能,就是这些工具中可以独当一面的好手。它能让项目组在几分钟内,定位到所有AssetBundle中包含的冗余资源,轻松地对这些资源执行定点优化,大量节省优化时间,下面我就来分享下使用方法和实现的效果:


使用方法

1. 提交检测

以我们自己的开发流程为例。使用UWA资源检测功能时,关注冗余资源数以及冗余资源内容,能很快定位优化点。在项目进行初次检查时,我们也自认为已经精确地将资源文件合理分包,但实际检查结果却有16个冗余资源。
请输入图片描述

这种情况是完全在我们意料之外,因此也难以凭借经验对问题进行分析。最直接的解决方法,只有对资源文件进行地毯式搜索检查,而这会耗费项目组大量时间和精力。

好在UWA本身对冗余资源有追踪。再点击“冗余资源数”按钮后,列表中就能显示所有冗余的资源和相应的AssetBundle文件。

请输入图片描述

2. 分析原因

在冗余资源已经定点的情况下,我们很快分析得出:不打包进入AssetBundle中的资源,如果被其他资源引用,会被复制到其他资源所在的AssetBundle。

3. 解决方案

很直接了当,PluginAsset中的资源文件全部打包到AssetBundle并最早进行加载。经过大约一小时的简单处理后,再次打包AssetBundle使用UWA资源检测,冗余资源被全部清除。
请输入图片描述

4. 养成“每生成一个包就提上来检测”的习惯

之后项目开始定期打包并使用UWA工具进行检查。在Unity引擎升级到5.4后的第一次例行检查中。我们发现总资源数目有明显上涨。
请输入图片描述
这时候,从UWA调出上次测试数据后,对比发现主要是贴图(Texture2D)资源数量有爆发增长。但实际Sprite引用数量却变化不大。
请输入图片描述

直接观察资源列表后,发现有大量Sprite没有被Unity打入图集中。正常打包后,所有被Sprite引用的贴图,都不应该在Texture2D中显示,而是在打包AssetBundle时已经被Unity合并为如下图命名以SpriteAtlasTexture-打头的图集Texture2D。

请输入图片描述

由于我们项目使用脚本,在发布时自动根据文件所在路径设置SpriteTag。因此很容易定位到是脚本问题,虽然该脚本在Unity5.3版本运行一直正常。经过后续研究发现,Unity5.4版本中,精灵的SpriteTag改变后,必须重新导入贴图才能确保生效。(我们使用Unity引擎自带的精灵图集系统)。因此非常感谢UWA提供的支持,使我们一开始就确定是图集问题,省下了大量测试排查的时间和精力。

重新整理SpriteTag后,再次打包发现仍然有9个冗余资源残留。

请输入图片描述
检查冗余资源列表后,发现都是Unity自带的材质和贴图资源。包括默认的粒子材质Default-Particle,默认精灵材质Sprites-Default等等。也就是根本不是我们自己在项目中添加的资源。

请输入图片描述

在UWA资源检测工具协助下,定位和处理冗余资源就是这么容易。各种版本变更、操作失误、流程问题造成的资源冗余也在定期检查之下无所遁形。

原文出处:侑虎科技
本文作者:admin
转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。

你可能感兴趣的文章
.net winForm 实现类似qq 弹出新闻
查看>>
SSL加速和证书卸载的配置方式
查看>>
Intersect交集
查看>>
Sencha touch 中的一段源码匿名中定义Function并调用
查看>>
android开发学习 ------- 枚举类型在Android中的用法
查看>>
day14 装饰器模拟验证附加功能
查看>>
c#简单自定义异常处理日志辅助类
查看>>
make: *** No targets specified and no makefile found. Stop.错误
查看>>
闭包的常见用处
查看>>
中联通4月份3G用户净增181.7万总数突破2000万
查看>>
cJSON填坑记
查看>>
css3(border-radius)边框圆角详解(转)
查看>>
Python MySQLdb 使用utf-8 编码插入中文数据
查看>>
hdu1406
查看>>
排序算法一:快速排序
查看>>
Python中的__name__和类
查看>>
Android 开发工具下载中文网站
查看>>
Redis 列表处理
查看>>
Redis常用命令
查看>>
The vim syntax of systemd unit file
查看>>