Wiki
验证规则
在 Unreal 编辑器中签入时执行的资产验证检查 : 9条内置规则、error / warning / info 严重级别、JSON 配置、导出 / 导入 / 重置,以及需要了解的限制。
简介
验证规则是在 Unreal 编辑器中签入时执行的 Unreal 资产检查 : 命名、纹理大小、缺失的 依赖项等。它们用于在内容进入仓库(在服务器上进行版本管理的项目)之前自动强制执行工作室规范。配置以 仓库为单位进行。
规则实际生效的地方
uversion checkin)或 Rider 插件进行的提交会完全绕过验证策略,不产生
错误也不留下痕迹。
这不是您这边的配置错误 : 这是当前的工作方式。规则针对 Unreal 资产(.uasset、.umap),
检查它们需要在加载项目的情况下打开编辑器。因此请把它们当作为在编辑器中工作的美术人员提供的防护栏,
而不是无人能越过的屏障。
两个实际后果 :
- 如果某项规范必须得到保证而不仅仅是被鼓励,请安排额外的检查(评审、构建侧校验): 仅靠规则并不能 保证它。
- 如果某人那里的规则“从不触发”,请先检查他从哪里提交。从桌面客户端提交的美术人员无论配置如何都 不会看到任何验证。
访问权限与角色
规则选项卡对超级管理员以及在其所管理仓库上的 project_admin 开放。
严重级别
严重级别决定当一条已启用的规则失败时,Unreal 编辑器中会发生什么。
| 严重级别 | 在 Unreal 编辑器中签入时的效果 |
|---|---|
error | 阻止签入 : 验证窗口打开,Proceed 按钮变灰,只有 OK 仍可点击。必须修复资产。 |
warning | 不阻止提交,但不会悄无声息地通过 : 验证窗口仍会打开,列出警告,用户必须点击 Proceed 才能继续。 |
info | 纯属信息提示 : 仅凭它自身不会打开窗口,也不会中断任何东西。 |
9条内置规则
| 规则 | 默认 | 检查内容 |
|---|---|---|
blueprint_compilation | error | Blueprint 在签入前无错误地编译。 |
naming_convention | warning | 命名前缀(Allar UE5 风格): T_ 纹理、M_ 材质、BP_ 蓝图、SM_ 静态网格体、WBP_ 控件等。 |
max_texture_size | warning | 纹理最大尺寸 : 默认 4096 × 4096,必须为 2 的幂。 |
material_complexity | warning | 材质复杂度 : 默认最多 256 条指令、16 个纹理采样。 |
import_settings | warning | 符合规范的导入设置(纹理、网格体)。 |
missing_dependency | error | 没有缺失的依赖项(默认忽略引擎内容)。 |
circular_dependency | error | 没有循环依赖(默认搜索深度为 20)。 |
unreferenced_asset | info | 标记未被引用的资产(默认排除地图和控件)。 |
duplicate_asset | warning | 检测重复资产(默认忽略 .umap)。 |
启用与配置
1. 打开 Rules 选项卡
在管理面板中,先在 PROJECT 行的选择器中选择仓库,然后打开同一行的 Rules 选项卡 : 规则一次只针对一个仓库。9 条规则每行一条显示,带有用于展开的箭头、一个开关、规则名称、其严重级别及其描述。
2. 启用规则
点击名称左侧的开关。保存是即时的 : 此操作没有保存按钮。这是容易被忽略的一步 : 在一个 全新的仓库上,所有开关都是关闭的,而一条关闭的规则无论其严重级别如何都不会向任何人发出提示。
3. 选择严重级别
行右侧的下拉菜单提供 Error、Warning 和 Info,同样即时保存。只有
error 才真正阻止签入 : 参见严重级别。
4. 调整参数(JSON)
点击行首的箭头以展开规则。Configuration (JSON) 字段包含其参数 ; 修改它们,然后点击
Save Config。无效的 JSON 会阻止保存并在字段下方显示错误详情(Invalid JSON: ...),此时
规则保持其先前状态。
示例 : 为移动项目将 max_texture_size 降至 2048,或将 naming_convention 切换为
error 以严格强制执行。
导出、导入、重置
Rules 选项卡右上角的工具栏中有三个按钮 :
- Export : 下载一个包含所有规则状态(启用、严重级别、配置)的
rules.json文件。 - Import : 重新加载
rules.json并将每个条目应用到对应的规则(未知的键会被忽略)。 - Reset to Defaults : 将所有规则恢复为其默认值。自定义配置将丢失(需要确认)。
导出 / 导入用于将验证策略从一个仓库复制到另一个仓库,或将其离线进行版本管理。
仓库中的 rules.json
manage_rules 的权限(一项“能力”,即附加到某个角色并在整个服务器上有效的权限)时,
已提交的 .uversion/rules.json 文件才会应用到仓库策略。否则该文件会被存储,但规则不会更改。这是一道防护 :
在该路径上拥有写入权限的贡献者无法通过提交文件来禁用验证。
常见陷阱
在 Unreal 编辑器中签入被阻止
一条设为 error 的规则失败了 : 验证窗口列出发现项,Proceed 按钮保持变灰。修复资产,或者
(如果该规则对您的场景过于严格)将其严重级别降为 warning,或将其禁用。
重置抹掉了我的设置
Reset to Defaults 对您的自定义配置具有破坏性。如果您希望能够回退,请先执行 Export。
某条规则似乎什么都没做
按此顺序进行三项检查 :
- 此人从哪里提交? 从桌面客户端、命令行或 Rider 插件提交时,不会评估任何规则(参见 规则实际生效的地方)。
- 规则是否已启用? 在一个全新的仓库上,它们最初全部处于禁用状态。
- 其严重级别是否正确? 只有
error会阻止签入 ;info不会中断任何东西。