Version: 2022.2
版本控制
Perforce 集成

版本控制集成

Unity has integrations with two version control systems: Perforce and Plastic SCM. To use the version control integrations in Unity, you need to have either a Perforce or Plastic SCM server set up for your Unity Project.

在 Unity 中设置版本控制

打开一个 Unity 项目,选择 Edit > Project Settings__,然后选择 Editor__ 类别。

Unity Editor 中的 Version Control 设置
Unity Editor 中的 Version Control 设置

Version Control 下面有以下设置:

属性 功能
Mode 选择版本控制模式。
Hidden meta files 在操作系统的文件资源管理器中隐藏 .meta 文件。无论您选择哪种模式,Unity 都不在 Project 视图中显示 .meta 文件。
Visible meta files Select this option to work with a version control system that Unity doesn’t support. This is the default setting. You can then manage the source Assets and metadata for those Assets with a version control system of your choice.
Perforce 如果将 Perforce 用作版本控制系统,请选择此选项。
Plastic SCM Select this option if you use Plastic SCM as your version control system.
Username
(仅限 Perforce)
输入与您的 Perforce 帐户关联的用户名。
Password
(仅限 Perforce)
输入与您的 Perforce 帐户关联的密码。
Workspace
(仅限 Perforce)
输入您的工作空间(例如 Example_Workspace_1)。
Server
(仅限 Perforce)
输入您的 Unity 项目所在的服务器(例如 localhost:1666)。
Host
(仅限 Perforce)
输入计算机应模拟的主机名(例如 workstation123.perforce.com)
Log Level 选择要在 Unity 的控制台日志中接收的版本控制信息量。
Verbose Unity 记录与版本控制相关的所有操作。此选项提供了非常详细的日志记录,如果要调试版本控制设置,该选项很有用。
Info Unity 记录与版本控制有关的错误、警告和信息。
Notice Unity 记录错误和警告。
Fatal Unity 仅将致命错误打印到控制台。
Status 显示有关版本控制系统的连接状态的信息。如果未连接,请选择 Connect 以连接到您已配置的系统。
Automatic Add 启用此设置后,当您通过 Editor 或磁盘上的文件夹将文件添加到项目时,Unity 会自动将文件添加到版本控制系统。禁用此设置后,您需要手动将文件添加到版本控制系统。默认情况下会启用此设置。
Work Offline
(仅限 Perforce)
启用此设置可脱机工作。启用此设置后,您需要在 P4V 中协调脱机工作,或在 P4 中使用 reconcile 命令使 Perforce 服务器仓库与您在脱机时所做的工作保持同步。有关更多信息,请参阅脱机使用 Perforce
Allow Async Update
(仅限 Perforce)
启用此设置可使用异步版本控制状态查询。启用后,Perforce 将更新文件的版本控制状态,并且不会停止 Unity Editor。当与版本控制服务器的连接存在高延迟时,请使用此设置。

注意:__仅状态查询是异步的。Unity 以同步方式执行需更改文件状态或需要了解最新文件状态的操作。| |Show Failed Checkouts__
(仅限 Perforce)
启用此属性可在 Perforce 无法执行签出操作时显示对话框。如果连接中断,或者另一个用户以独占方式签出了您要编辑的资源,则可能会发生这种情况。
Overwrite Failed Checkout Assets
(仅限 Perforce)
启用此设置后,Unity 将保存无法签出的任何资源。这意味着即使 Perforce 无法签出文件,Unity 也会强制完成保存到文件的过程。默认情况下会启用此选项。如果禁用此设置,则如果 Perforce 无法签出文件,Unity 不会强制保存文件。
Overlay Icons 启用此设置可在 Editor 中显示版本控制状态图标。
Smart Merge 启用 Smart Merge 可以让 Unity 轻松合并在同一行中有更改的文件。如果多个用户同时在开发同一个项目,此设置将很有用。
Off 禁用 Smart Merge。
Ask 启用 Smart Merge,但如果发生冲突,则在合并之前会收到通知。这是默认设置。
Premerge 自动使用 Smart Merge。

配置 Version Control 设置,然后选择状态区域旁边的 Connect 按钮以连接到版本控制系统。Unity 连接到系统后,状态区域将显示 Connected

要调整版本控制工具,请打开 Preferences__,然后选择 External Tools__ 部分。可以在 Revision Control Diff/Merge 下面选择一个新工具。

在 Unity 中使用版本控制

在将 Editor 设置为与版本控制系统一起使用时,您可以通过 Editor 执行版本控制操作,而不必在版本控制客户端中执行这些操作。为此,请右键单击 Project 视图中的资源。

版本控制操作根据您使用的版本控制方式而异。下表显示了每种版本控制方式可以使用的操作:

版本控制操作 描述 Perforce Plastic SCM
Get Latest 这将更新计算机上的文件以使这些文件与版本控制系统中的文件匹配。 否。要获取最新更改并更新文件,需要使用版本控制窗口 (Window > Asset Management > Version Control)。
Submit 将文件的当前状态提交到版本控制系统。
Check Out 允许对文件进行更改。
Check Out (Other) 选择是要签出资源及其 .meta 文件,仅签出资源,还是仅签出 .meta 文件。
Mark Add 将文件添加到版本控制中。
Revert 放弃对打开的已更改文件所做的更改。
Revert Unchanged 从先前已签出但尚未修改的文件中删除“已签出”状态。
Resolve Conflicts 解决已被多个用户更改的文件的冲突。 否。冲突出现在版本控制菜单中,但是您需要在 Plastic SCM GUI 中解决冲突。
Lock 阻止其他用户提交对文件的更改。 No. To lock or unlock files in Plastic SCM, you must edit a specific Plastic SCM lock file externally. For more information, see the page on Plastic SCM Integration.
Unlock 解锁,并允许任何人提交更改。 No. To lock or unlock files in Plastic SCM, you must edit a specific Plastic SCM lock file externally. For more information, see the page on Plastic SCM Integration.
Diff 比较计算机上的本地文件和服务器上的文件之间的差异。您可以选择仅比较资源文件,或比较资源文件及其 .meta 文件。

签出文件

在某些版本控制系统(例如 Perforce)中,默认情况下,版本控制文件为只读, 并且要求您在编辑文件之前先将它们签出(除非启用了 Work offline 设置)。从 Editor 中处理版本化的资源时,Inspector 将显示用于启用文件编辑的 Check Out 按钮。此外,Project Settings Inspector 还具有 Checkout 按钮,可用于签出特定的项目设置。

如果您的自定义 Editor 脚本代码禁用了只读资源的另一个自定义编辑工具的某些部分, 或者如果您要手动写入版本化文件,请使用 AssetDatabase.IsOpenForEditAssetDatabase.MakeEditable API 检查文件是否可编辑,并执行签出操作。

版本控制集成还将针对自定义版本控制操作验证逻辑来公开 Provider.PreCheckoutCallbackProvider.PreSubmitCallback C# 回调。

Unity 执行__保存项目 (Save Project)__ 操作时,会将您在 Editor 中修改或标记为已修改的所有资源写入磁盘中。然后会根据需要在版本控制中签出资源。即使没有对文件进行实际更改,这也可能导致资源被签出。如果 Editor 脚本在资源上调用 EditorUtility.SetDirty 但不检查资源是否已修改,通常会发生这种情况。

注意:如果 Unity 无法将更改提交到版本控制客户端(例如,如果服务器关闭或发生许可证问题),它会将更改存储于单独的变更集中。

在您保存了对 .scene 文件的更改后,Unity 会自动将该文件签出。如果使用 Plastic SCM,则还会自动签出自动生成的资源,例如光照贴图。

版本控制窗口

可以使用版本控制窗口来查看位于变更列表中的文件。要访问该窗口,请导航到 Window > Asset Management > Version Control

Editor 中停靠的版本控制窗口
Editor 中停靠的版本控制窗口

Outgoing 选项卡列出了所有等待提交到版本控制中的本地更改。Incoming 选项卡列出了需要从版本控制中拉取的所有更改。

在窗口中右键单击资源或变更列表可对它们执行操作。要在变更列表之间移动资源,只需将资源从一个变更列表拖动到目标变更列表的标题上。

图标

Editor 会显示以下图标来指示文件和资源的版本控制状态:

图标 目的
本地添加的文件,等待添加到版本控制中。
由另一个用户添加到版本控制中的文件,等待添加到版本控制中。
文件已在本地签出。
文件已被另一个用户远程签出。
合并此文件时存在冲突并且需要解决。
文件已在本地删除,在版本控制中等待删除。
文件已被另一个用户删除,在版本控制中等待删除。
文件尚未受版本控制。可以使用 Mark Add 操作来手动添加文件。
文件已被您锁定,其他用户无法对其进行修改。
文件已被另一个用户锁定,您无法对其进行修改。
另一个用户已签入此文件的新版本。使用 Apply Incoming Changes 操作可获取最新版本。
服务器正在请求此文件的版本控制状态,或正在等待响应。仅当使用集中式版本控制系统(如 Perforce)时才会显示。
版本控制
Perforce 集成