小编典典

如何使用 Git 进行 Unity3D 源代码控制?

all

将Git源代码控制与 Unity 3D
结合使用的最佳实践是什么,尤其是在处理 Unity 3D 项目的二进制性质时?请描述工作流程,.gitignore 中将包含哪些路径,应在 Unity
和/或项目中设置哪些设置,以及任何其他应注意的特殊事项。

注意:我意识到使用 Asset Server 是 Unity 推荐的方式,但出于各种原因我想使用
Git。请不要回答说明或争论我应该只使用资产服务器。资产服务器真的不是我的选择。


阅读 108

收藏
2022-03-09

共1个答案

小编典典

在 3D 游戏中使用 Git

2015 年 10 月更新: GitHub 已经发布了一个名为Git LFS的 Git 插件,它直接处理以下问题。您现在可以轻松高效地对大型二进制文件进行版本控制!

Git 可以开箱即用地处理 3D 游戏。然而这里的主要警告是,随着提交历史的膨胀,对大型(> 5 MB)媒体文件进行版本控制从长远来看可能是一个问题。我们已经解决了我们项目中的这个潜在问题,方法是只在二进制资产被认为是最终版本时对其进行版本控制。我们的 3D 艺术家使用Dropbox来处理 WIP 资产,这既是出于上述原因,也是因为它更快、更简单(没有多少艺术家会积极使用 Git!)。

Git 工作流程

您的 Git 工作流程在很大程度上是您需要自己决定的,因为您有自己的团队经验以及如何一起工作。然而。我强烈推荐原作者在此处描述的适当命名的Git Flow方法。

我不会在这里深入探讨该方法的工作原理,因为作者完美地描述了它,而且用很少的话也很容易理解。我已经和我的团队一起使用了一段时间,这是迄今为止我们尝试过的最好的工作流程。

Git GUI 客户端应用程序

这实际上是个人偏好,因为在 Git GUI 或是否使用 GUI 方面有很多选择。但我想推荐免费的SourceTree 应用程序,因为它可以完美地与 Git Flow 扩展插件相结合。

Unity3D忽略文件夹

要获取最新版本,请查看 Github 维护的 Unity.gitignore 文件,没有操作系统细节。

# =============== #
# Unity generated #
# =============== #
Temp/
Library/

# ===================================== #
# Visual Studio / MonoDevelop generated #
# ===================================== #
ExportedObj/
obj/
*.svd
*.userprefs
/*.csproj
*.pidb
*.suo
/*.sln
*.user
*.unityproj
*.booproj

# ============ #
# OS generated #
# ============ #
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

Unity3D 设置

对于 Unity 3D v4.3 及更高版本:

  1. (在 v4.5 及更高版本中跳过此步骤)ExternalUnity → Preferences → Packages → Repository.

  2. 打开

Edit

菜单并选择

Project Settings → Editor

  1. 切换Version Control ModeVisible Meta Files
  2. 切换Asset Serialization ModeForce Text

  3. File从菜单中保存场景和项目。

附加配置

在 Unity3D 项目中使用 Git 时遇到的几个主要烦恼之一是 Git 不关心目录,并且在从目录中删除文件后会很高兴地留下空目录。Unity3D 将为这些目录生成 *.meta 文件,当 Git 提交不断添加和删除这些元文件时,可能会导致团队成员之间发生争执。

将此 Git 合并后挂钩添加/.git/hooks/包含 Unity3D 项目的存储库的文件夹中。在任何 Git pull/merge 之后,它会查看哪些文件已被删除,检查它所在的目录是否为空,如果是则删除它。

2022-03-09