如何DIY项目资源私有检测规则

如何DIY项目资源私有检测规则

本地资源检测是UWA推出的、面向于静态资源的全量分析。可以全面自动检测项目静态工程内各项资源、代码和设置,能够帮助项目组制定合理的资源与代码标准,及时发现潜在的性能问题和异常错误,建立有效的开发规范。

为了在游戏优化过程中持续与UWA行业参数进行比对,并保障项目上线前没有致命性的问题、免除项目组自行开发工具进行资源扫描(特别是针对代码的扫描),北京一家深耕SLG品类的出海大厂深度使用了UWA本地资源检测及自定义检测规则的功能,下面我们就详细介绍这个团队是如何结合自身项目的需求,实现本地资源检测的“量体裁衣、按需定制”。

一、为什么需要自定义本地资源检测规则?

本地资源检测自定义检测规则更聚焦于项目中某些特定类型资源、设置的检测,以及特殊的情况。例如希望找出一批被更新过的旧纹理方便后续替换;或者想要在指定场景下,检测多个设置复合作用时,哪些资源会出现不正常的丢失等。

该团队就通过本地资源检测的“自定义规则”功能,在符合一定框架的要求下,自行编写了相关的规则,为项目实现了更符合特定要求的规则检测。例如规则的命名、实现的逻辑、筛选出的结果等,都可以由项目团队按需编写实现。

二、详解自定义的本地资源检测规则

该团队非常乐意将自定义规则的设想与大家分享,UWA从中选取几条具有代表性的规则,希望能为大家在今后有类似需求时提供借鉴和参考:

  • Prefab属性丢失:检查项目中的Prefab,任何Component的属性丢失都会被检测出来,方便后续进行排查。由于项目开发过程中,会频繁对资源进行修改、删减,从而导致Prefab中引用的资源变成空,使得项目容易在运行过程中产生报错等情况。

  • 材质完全一样:两个不同的材质,但是属性、贴图、Shader等都完全一致的,就会检测出来。对于属性相同的材质球,我们完全可以进行合并。因为Built-in管线中合批的前提条件是材质球完全一致,且是同一个材质球实例,这样在Buit-in管线中就能尽可能地增大DrawCall合批的概率。

  • 特效LOD配置待完善:检查特效的LOD配置。画质分级是性能优化的重要一环,而在画质分级中,特效分级也是必要环节。在项目开发过程中,如果美术没有将特效的LOD配好,就会导致特效的LOD存在缺陷。比如特效节点很多,但不同的LOD层级的开启节点却设置成了一样的,没有进行分层。

    因此特效的LOD设置也要确保严格准确,否则在低端机上释放了过多或过于复杂的特效,就会导致业已明显的性能问题变得更加严重。

  • 路径错误的Spine资源:Spine资源有特定存放的目录, 当放错目录时就会检测出来。良好的资源存放目录规范是项目开发顺利的前提之一。为了更好地管理项目资源,Spine资源通常会放在预先定义好的目录中。

  • Prefab脚本丢失:检测Prefab下挂脚本的情况。脚本变成miss可能是由于工程迁移、Package没有正确导入等因素导致。尽早地提前排查,对有问题的Prefab进行修改,可以避免项目后续运行时出现不必要的报错或者闪退。

  • ScriptableObject引用丢失:检测ScriptableObject的引用情况。ScriptObject通常用于数据配置,如果引用丢失,那么项目运行时也可能会造成报错或者闪退。

  • 尺寸超过2048的图集:图集分辨率过大会导致加载耗时以及内存占用增大,不必要地使用大图集还容易出现大量空白的浪费现象,因此需要控制图集大小在合理范围内,对图集的分辨率要根据需求做出一定的限制。

除以上部分规则外,该团队结合自身关心的参数,实现了二十余条贴合项目各类特定检测需求的自定义规则,例如“疑似无用Prefab(资源全丢)”、“Unity类型使用 '.?' 语法”、“Prefab材质为空”、“特效-设置错误的自身特效资源”等。

这些定制化的规则,在本地资源检测已有规则的基础上,进一步完善了对项目的检测需求,在面对一些业内主流尚未关注到的问题,该团队作为先行者,在自己项目中已经提前补上了这些可能的漏洞。

三、更多的定制化

除此以外,我们也可以根据项目实际情况,在本地资源检测报告中设定符合当前需求的各项阈值。

也可以在本地资源检测中设置具体的检测范围和具有指定特征的一类资源,甚至为不同场景与用途的同类资源分别设置更符合实际需求的阈值。

更多关于“本地资源检测”功能的教程,请查看:
New | UWA本地资源检测正式上线
规则我说了算!| 自定义规则重磅上线
本地资源检测功能更新 — “自动修复”重磅上线
本地资源检测|单规则多阈值设置功能上线

请点击《免费试用 |UWA性能保障体系全体验》,15天免费试用就在眼前!