Unity 可集成 Perforce 和 Plastic SCM 等版本控制系统。请参阅这些页面了解所选择的版本控制系统的具体信息。
使用版本控制系统可以更方便用户(或多个用户)管理其代码。此系统用于存储文件并管理它们的访问权限。就 Unity 而言,包括与 Unity 项目相关的所有文件。通过使用版本控制,可以跟踪对源代码的所有更改,还可了解更改人员、更改原因以及更改内容的信息。这样可以轻松恢复到早期版本的代码,或者比较版本之间的差异。而且,更容易找出错误最初发生的时间,以及是什么更改可能导致了该错误。
根据版本控制软件的说明来设置该软件,然后按照以下步骤操作:
使用所选客户端在计算机上设置或同步工作空间(请参阅 Plastic SCM 集成指南或 Perforce 集成指南以获取此步骤的帮助)。
将现有项目复制到工作空间,或启动 Unity 并在工作空间中创建新项目。
打开项目,选择 Edit > Project Settings__,然后选择 Editor__ 类别。
在 Version Control 下,根据所选的版本控制系统选择__模式 (Mode)__。
填写版本控制设置,例如用户名/密码/服务器/工作空间。
如果希望文件在添加到项目(或磁盘上的文件夹)时自动添加到版本控制系统,请保持 Automatic add 为选中状态。否则,需要手动添加新文件。
可以选择脱机工作。仅当了解如何将更改手动集成到版本控制软件中时,才建议使用此模式(脱机使用 Perforce)。
根据工作团队的偏好和选择的版本控制系统,可以编辑 Asset Serialization、Default Behaviour Mode 和 Sprite Packer 选项。
单击 Connect 并确认片刻后在 Connect 按钮上方显示“Connected”。
使用标准客户端(例如 p4v)确保添加 Assets 和 ProjectSettings 文件夹中的所有文件(包括以 .meta 结尾的文件)。
注意:随时都可以转到 Prefences 菜单并选择 __External Tools__,然后调整 Revision Control Diff/Merge 工具。
就目前而言,您应该能够通过右键单击 Project 视图中的资源(而不是通过版本控制客户端)来直接执行大多数重要的版本控制操作。版本控制操作取决于所选择的版本控制系统,下表显示了每个版本控制系统中可直接使用的操作:
版本控制操作 | 描述 | Perforce | Plastic SCM |
签出 (Check Out) | 允许对文件进行更改 | 是 | 是 |
与 HEAD 的差异 (Diff against head) | 比较本地文件和 HEAD 中的文件之间的差异 | 是 | 是 |
获取最新 (Get Latest) | 拉取最新更改并更新文件 | 是 | 否* |
锁定 (Lock) | 阻止其他用户对文件进行更改 | 是 | 否** |
标记添加 (Mark Add) | 在本地添加但不添加到版本控制系统 | 是 | 是 |
解决冲突 (Resolve Conflicts) | 解决已被多个用户更改的文件的冲突 | 是 | 否*** |
还原 (Revert) | 放弃对打开的已更改文件所做的更改 | 是 | 是 |
还原未更改内容 (Revert Unchanged) | 放弃对打开的未更改文件所做的更改 | 是 | 是 |
提交 (Submit) | 将文件当前状态提交给版本控制系统 | 是 | 是 |
解锁 (Unlock) | 解锁并允许任何人进行更改 | 是 | 否** |
* 要使用 Plastic SCM 获取最新更改并更新文件,需要使用版本控制窗口。
** 使用 Plastic SCM 来锁定和解锁需要您在外部编辑特定的 Plastic SCM 锁定文件,请参阅 Plastic SCM 集成页面以了解更多信息。
*** 冲突会显示在版本控制菜单中,但需要在 Plastic SCM GUI 中解决。
可以从__版本控制窗口__ (Window > Asset Management > Version Control) 中查看位于变更列表中的文件。该窗口停靠在 Editor 中的 Inspector 旁边:
“Outgoing”选项卡列出等待提交到版本控制系统的所有本地更改,而“Incoming”选项卡列出需要从版本控制系统中拉取的所有更改。
通过右键单击此窗口中的资源或变更列表,可以对它们执行操作。要在变更列表之间移动资源,只需将资源从一个变更列表拖动到目标变更列表的标题上。
Unity Editor 中会显示以下图标,从而显示文件/资源的版本控制状态:
图标 | 含义 | 其他信息 |
![]() |
已在本地添加文件 | 等待添加到版本控制系统 |
![]() |
文件由另一个用户添加到版本控制系统 | 等待添加到版本控制系统 |
![]() |
文件已被您签出 | 已在本地签出 |
![]() |
文件已被另一个用户签出 | 已远程签出 |
![]() |
合并此文件时存在冲突 | 需要解决冲突 |
![]() |
文件已被您删除 | 等待版本控制系统中删除 |
![]() |
文件已被另一个用户删除 | 等待版本控制系统中删除 |
![]() |
文件尚未受版本控制 | 无 |
![]() |
文件已被您锁定 | 其他用户无法修改 |
![]() |
文件已被另一个用户锁定 | 您无法修改 |
![]() |
另一个用户已签入此文件的新版本 | 使用“Apply Incoming Changes”获取最新版本 |
![]() |
服务器正在请求此文件的版本控制状态,或正在等待响应 | 只有在使用 Perforce 等集中式版本控制系统时才会看到此图标 |
注意事项:
处理资源时,Unity 会自动签出资源文件以及相关的 .meta 文件。但是,在大多数情况下,不会修改 .meta 文件,这可能会导致一些额外的工作,例如在稍后合并分支时。
Unity 支持在脱机模式下工作,例如,在没有网络连接到版本控制库的情况下继续工作。
Unity 支持某些版本控制提供程序(如 Perforce)的异步版本控制状态查询。此选项允许这些提供程序更新文件的版本控制状态,而不会使 Unity 卡顿。当与版本控制服务器的连接存在高延迟时,请使用此选项。
注意:只有状态查询才是异步的。更改文件状态或需要了解最新文件状态的操作则是同步执行的。
如果 Unity 无法将更改提交到版本控制客户端(例如,如果服务器关闭或发生许可证问题),这些更改将存储于单独的变更集。
要了解有关使用 Asset Server(Unity 的内部版本控制系统)的更多信息,请参阅关于 Asset Server的文档。
要使用 Unity 不支持的版本控制系统,请在 Editor 窗口中选择 MetaData 作为版本控制的 Mode。这样一来,即可使用您选择的版本控制系统来管理这些资源的源资源和元数据。要了解与此相关的更多信息,请参阅关于外部版本控制系统的文档。
2017–02–12 页面已修订并只进行了有限的编辑审查
在 Unity 2017.3 中添加了关于异步版本控制状态查询的文档。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.