Wiki
Unreal Engine 插件
面向 Unreal Engine 的 uVersion 插件:编辑器内原生版本控制、Blueprint 差异比较、Project Health 审计,以及最常拦下一次提交的两条规则。
前提条件
.uversion/ 文件夹;如果找不到,且此前也没有保存过认证令牌,
它就完全不会激活,Unreal 也就没有任何版本控制。
这不是故障:正是它阻止插件强行介入那些并非用 uVersion 进行版本管理的项目。
请从 desktop 客户端克隆出的文件夹中打开项目,而不是从放在别处的
副本中打开。
安装
uVersion 插件以预编译的二进制形式分发,由 desktop 客户端管理。 无需你自行编译,也没有需要处理的源文件。 它从不纳入版本管理:它不会随仓库一起到来,也不应被提交 进仓库。每台机器都安装与其 Unreal 版本和其系统相匹配的二进制文件。
支持的 Unreal 版本:5.6 及以上。
1. 在 desktop 客户端中打开工作区
安装 uVersion desktop 客户端,登录,然后打开包含 Unreal 项目的工作区。一切都在客户端中进行:没有要下载的压缩包,也不用手动解压到 项目里。
2. 让客户端检测项目
客户端会在工作区根目录下(只要埋得不超过三层深)查找你的
.uproject(描述一个 Unreal 项目的文件)。一旦找到,工作区标签页顶部就会出现一条
Unreal 栏,并把与你的 Unreal 版本相匹配的插件放入 Plugins/uVersion/。
左侧的标记显示插件的状态和版本
号:更新也在那里查看。
3. 在 Unreal 中打开项目
插件立即生效。无需在编辑器的 Plugins 窗口中勾选任何东西,也无需 重启:如果它不见了,那是因为客户端还没把它放进来,而不是它还有待启用。
之后:更新
desktop 客户端会在打开项目时以及之后定期检查新版本。请注意,自动 检查在两种情况下做的事并不一样:
- 插件缺失:会不经询问直接安装。这正是让首次启动无感的原因。
-
插件已存在但已过时(新版本,或 Unreal 版本变更):客户端
只会提醒你。它绝不会自行替换已安装的插件。此时 Unreal 面板的
标记会变为
Update ready。
要应用更新:关闭 Unreal 编辑器,然后点击该标记。已加载的插件
无法在磁盘上被替换;如果编辑器仍开着,标记会显示
Restart UE。
首次连接
正常情况下,没有什么需要连接。只要插件在项目周围检测到 uVersion 工作区,或检测到已保存的令牌,它就会自行选择为版本控制提供程序。 你的凭据会从 desktop 客户端沿用,无需重新输入。打开项目即可。
下面三个步骤仅在自动选择没有发生时才需要。
1. 打开 Revision Control 菜单
它位于编辑器状态栏的右下角,而不在顶部菜单中。它向上
弹出,包含 Unreal 的各项操作,其中有 Submit Content,还有一个带我们
Audit Project (Project Health) 条目的 uVersion 分区。
选择 Connect to Revision Control。
2. 在 Provider 列表中选择 uVersion
Revision Control Login 窗口随即打开。展开 Provider,选择 uVersion。当工作区被识别时,窗口会以绿色自行说明 (Automatically configured from workspace),而 Workspace、Server URL 和 Username 字段 已经填好:无需输入任何内容。
3. 用 Accept Settings 确认
窗口底部的 Accept Settings 按钮会应用该选择并关闭窗口。此时 状态栏会显示 Connected to,其后是仓库名和你的用户名。该选择会被 记住:以后再打开项目就不会再经过这一步。
检出一个资产,然后提交
从编辑器出发、针对一个内容文件的完整流程。而代码永远不从这里出发:见 代码经由 desktop 客户端。
1. 动手前先看看资产的状态
Content Browser 的每个缩略图都带有一个标记,说明该资产处于什么状态:由你检出、由 他人检出,或相对服务器已过时。工具提示会给出完整句子,例如 File is out of date, sync to get the latest version。这种情况下请先同步 (右键、Revision Control、Sync):在一个过时的版本上开始工作, 就是在为冲突做准备。
2. 检出该资产
右键点击资产,Revision Control 子菜单,然后 Check Out。一切都在这里: Sync、Check Out、Check In、History、Diff Against Depot、 Revert,与任何其他 Unreal 提供程序一样。美术人员没有任何新东西要 学。
实践中你往往什么都不用做:只要你修改一个资产,插件就会自行在服务器端 加锁,无需手动 checkout。
3. 提交前先比较
Diff Against Depot 会打开编辑器标准的可视化比较工具,Blueprint 也不例外: 两个修订版并排显示,新增、删除或修改的节点会被 框出。可从 History 对历史记录中的任何提交使用。
4. 提交
右键、Revision Control、对所选项 Check In,或用状态栏菜单里的 Submit Content 一次性全部发送。窗口会列出相关文件, 包括删除项,并要求填写说明。提交时,插件会 清理你重命名遗留的 redirector,并运行已启用的校验规则:一条处于 error 的规则会中止提交并指出出错的文件。
插件在 Unreal 中的功能
Project Health:审计项目
状态栏的 Revision Control 菜单中有一个
Audit Project (Project Health) 条目。它会遍历项目的资产注册表,
不加载任何一个资产,并生成一份健康报告:命名、文件夹结构、
依赖、孤立内容、成本。它可离线工作(报告写入
Saved/uVersionAudit 下),并在你连接时发送给服务器,从而填充 desktop 客户端的
Project Health 标签页。
redirector 清理
当你重命名或移动一个资产时,Unreal 会在其身后留下一个 redirector:一个小小的转发文件, 把旧路径指向新路径,好让那些引用旧名的资产继续 工作。它们很快堆积起来,最终让目录树难以阅读。插件会检测它们,并在 checkin 时清理,同时更新所有受影响资产中的引用。
checkin 前校验
插件能对提交的文件运行一系列检查:Blueprint 编译、命名 规范、纹理大小、导入设置、缺失依赖、循环依赖、孤立 资产、重复、材质复杂度。共九条规则。一条处于 error 的规则会拦下提交, 一条处于 warning 的规则则在确认后放行。
启动时的对账
项目打开时,插件会把你的资产状态与服务器进行比较。它会遍历 Content/
以及项目各插件的 Content/,并自动检出磁盘上所有可写、
而尚未被检出的资产。其用意是保护你:一个你已经开始修改的文件,
不会在两次会话之间被队友抢走。
代码经由 desktop 客户端,而非经由 Unreal
插件拒绝提交代码文件:.cpp、.h、
.hpp、.c 和 .cs。该尝试会停在一个指出出错文件的阻断
窗口上。这不是缺陷:desktop 客户端会在发送前编译,并发布你队友在同步时取得的
编辑器二进制文件。一次从编辑器发出的代码提交会同时错过这两者,
并会让整个团队的二进制分发陷入停顿。
因此,请从 desktop 客户端提交你的代码。而内容文件则完全可以 从 Unreal 出发提交。
.uasset 提交。消息会告诉你先从 desktop
客户端提交代码。
这是最常见的拦截,而且它偏偏会落在一个不写代码的人身上:只要有一个源文件 在磁盘上被变为可写,启动时的对账就会自行把它检出。 原因是实实在在的:一个针对未提交代码保存下来的资产,会弄坏所有同步它的人, 因为他们的二进制里没有该资产所依赖的代码。
解除办法:打开 desktop 客户端的 Pending 标签页、 My Pending Changes 列表,找出代码文件,如果你改过它们就做 Checkin Selected, 如果你没碰过就做 Revert。之后你的内容提交便会 正常发出。可能需要几秒钟,等编辑器刷新它对锁的视图。
常见问题
没有 uVersion 菜单:编辑器忽略版本控制
项目多半不在一个 uVersion 工作区里。请检查克隆出的文件夹根目录下是否存在
.uversion/ 文件夹,以及你确实是从那个文件夹打开项目,而不是从放在别处的
副本打开。
« Failed to connect to source control »
请检查 desktop 客户端是否正在运行,以及你是否已在其中登录: 正是它持有你的凭据,也懂得如何与一个自签名服务器对话。如果工作区的所有者账号没有 在客户端登录,插件就会拒绝以另一个身份工作,这是刻意的。
我没碰过任何代码,提交却被拒绝
你持有某个代码文件的检出。见 代码经由 desktop 客户端。
我想要一个别人已锁定的资产
这不从 Unreal 发起:插件没有请求释放的功能。请通过 desktop 客户端,Pending 标签页,Other Users' Locks 分区,点击该文件行上的 Request Release 按钮。持有者会以 Production 看板中一张卡片的形式收到 这个请求。
插件无法更新
这是预期行为:自动检查会安装缺失的插件,但对于更新它只会
发出提示。关闭 Unreal 编辑器(已加载的插件无法被替换),然后点击 desktop
客户端 Unreal 栏中的 Update ready 标记来应用它。
某条校验规则从不触发
九条规则出厂即为停用。管理员必须从 Admin 面板的 Rules 标签页按项目启用它们。