uVersion
简体中文
下载 →

Wiki

验证规则

在 Unreal 编辑器中签入时执行的资产验证检查 : 9条内置规则、error / warning / info 严重级别、JSON 配置、导出 / 导入 / 重置,以及需要了解的限制。

简介

验证规则是在 Unreal 编辑器中签入时执行的 Unreal 资产检查 : 命名、纹理大小、缺失的 依赖项等。它们用于在内容进入仓库(在服务器上进行版本管理的项目)之前自动强制执行工作室规范。配置以 仓库为单位进行。

规则实际生效的地方

验证由 Unreal 编辑器完成,而非服务器 此处配置的规则由 Unreal Engine 的 uVersion 插件在您从编辑器提交时下载并执行。服务器本身在记录提交时 从不查阅这些规则。在依赖它们之前需要了解的后果 : 从桌面客户端命令行uversion checkin)或 Rider 插件进行的提交会完全绕过验证策略,不产生 错误也不留下痕迹。

这不是您这边的配置错误 : 这是当前的工作方式。规则针对 Unreal 资产(.uasset.umap), 检查它们需要在加载项目的情况下打开编辑器。因此请把它们当作为在编辑器中工作的美术人员提供的防护栏, 而不是无人能越过的屏障。

两个实际后果 :

  • 如果某项规范必须得到保证而不仅仅是被鼓励,请安排额外的检查(评审、构建侧校验): 仅靠规则并不能 保证它。
  • 如果某人那里的规则“从不触发”,请先检查他从哪里提交。从桌面客户端提交的美术人员无论配置如何都 不会看到任何验证。

访问权限与角色

规则选项卡对超级管理员以及在其所管理仓库上的 project_admin 开放。

自动初始化,但全部处于禁用状态 9 条默认规则在创建仓库时自动创建(如果没有,则在首次打开一个尚无规则的仓库的 Rules 选项卡时创建)。它们以 禁用状态初始化 : 在一个全新的仓库上,在管理员启用他想要的规则之前,不会运行任何验证。 您从一套完整的规则开始,进行启用和调整。

严重级别

严重级别决定当一条已启用的规则失败时,Unreal 编辑器中会发生什么。

严重级别在 Unreal 编辑器中签入时的效果
error阻止签入 : 验证窗口打开,Proceed 按钮变灰,只有 OK 仍可点击。必须修复资产。
warning不阻止提交,但不会悄无声息地通过 : 验证窗口仍会打开,列出警告,用户必须点击 Proceed 才能继续。
info纯属信息提示 : 仅凭它自身不会打开窗口,也不会中断任何东西。
Unreal 编辑器中的 Pre-Checkin Validation 窗口,显示发现项列表和 Proceed 按钮。

9条内置规则

规则默认检查内容
blueprint_compilationerrorBlueprint 在签入前无错误地编译。
naming_conventionwarning命名前缀(Allar UE5 风格): T_ 纹理、M_ 材质、BP_ 蓝图、SM_ 静态网格体、WBP_ 控件等。
max_texture_sizewarning纹理最大尺寸 : 默认 4096 × 4096,必须为 2 的幂。
material_complexitywarning材质复杂度 : 默认最多 256 条指令、16 个纹理采样。
import_settingswarning符合规范的导入设置(纹理、网格体)。
missing_dependencyerror没有缺失的依赖项(默认忽略引擎内容)。
circular_dependencyerror没有循环依赖(默认搜索深度为 20)。
unreferenced_assetinfo标记未被引用的资产(默认排除地图和控件)。
duplicate_assetwarning检测重复资产(默认忽略 .umap)。

启用与配置

1. 打开 Rules 选项卡

在管理面板中,先在 PROJECT 行的选择器中选择仓库,然后打开同一行的 Rules 选项卡 : 规则一次只针对一个仓库。9 条规则每行一条显示,带有用于展开的箭头、一个开关、规则名称、其严重级别及其描述。

9 条验证规则的列表 : 每行有箭头、启用开关、规则名称、严重级别,以及右侧的 Error / Warning / Info 下拉菜单。

2. 启用规则

点击名称左侧的开关。保存是即时的 : 此操作没有保存按钮。这是容易被忽略的一步 : 在一个 全新的仓库上,所有开关都是关闭的,而一条关闭的规则无论其严重级别如何都不会向任何人发出提示。

3. 选择严重级别

行右侧的下拉菜单提供 ErrorWarningInfo,同样即时保存。只有 error 才真正阻止签入 : 参见严重级别

4. 调整参数(JSON)

点击行首的箭头以展开规则。Configuration (JSON) 字段包含其参数 ; 修改它们,然后点击 Save Config。无效的 JSON 会阻止保存并在字段下方显示错误详情(Invalid JSON: ...),此时 规则保持其先前状态。

一条在其 Configuration (JSON) 编辑器上展开的规则 : 输入区中的参数文本和右下角的 Save Config 按钮。

示例 : 为移动项目将 max_texture_size 降至 2048,或将 naming_convention 切换为 error 以严格强制执行。

导出、导入、重置

Rules 选项卡右上角的工具栏中有三个按钮 :

  • Export : 下载一个包含所有规则状态(启用、严重级别、配置)的 rules.json 文件。
  • Import : 重新加载 rules.json 并将每个条目应用到对应的规则(未知的键会被忽略)。
  • Reset to Defaults : 将所有规则恢复为其默认值。自定义配置将丢失(需要确认)。

导出 / 导入用于将验证策略从一个仓库复制到另一个仓库,或将其离线进行版本管理。

仓库中的 rules.json

已提交的 rules.json 并非任何人都能使其生效 只有当提交的作者持有名为 manage_rules 的权限(一项“能力”,即附加到某个角色并在整个服务器上有效的权限)时, 已提交的 .uversion/rules.json 文件才会应用到仓库策略。否则该文件会被存储,但规则不会更改。这是一道防护 : 在该路径上拥有写入权限的贡献者无法通过提交文件来禁用验证。

常见陷阱

在 Unreal 编辑器中签入被阻止

一条设为 error 的规则失败了 : 验证窗口列出发现项,Proceed 按钮保持变灰。修复资产,或者 (如果该规则对您的场景过于严格)将其严重级别降为 warning,或将其禁用。

重置抹掉了我的设置

Reset to Defaults 对您的自定义配置具有破坏性。如果您希望能够回退,请先执行 Export

某条规则似乎什么都没做

按此顺序进行三项检查 :

  1. 此人从哪里提交? 从桌面客户端、命令行或 Rider 插件提交时,不会评估任何规则(参见 规则实际生效的地方)。
  2. 规则是否已启用? 在一个全新的仓库上,它们最初全部处于禁用状态。
  3. 其严重级别是否正确? 只有 error 会阻止签入 ; info 不会中断任何东西。