将 Unity 3D 场景与 Git 合并

Merge Unity 3D scene with Git

我正在尝试为我的游戏项目实施 Git。对于脚本,它会很好用,因为它们已经在文本中。但是场景文件呢?它们是二进制文件,因此很难合并它们。如果我在场景中放置了一个游戏对象,而另一个同事在同一场景中放置了另一个游戏对象怎么办?我们将如何合并我们的场景?还是我们应该始终手动导出/导入它?

提前致谢。

通常在 'source' 存储库中保存二进制对象是有争议的想法。然而最近出现了一些专门的工具 http://wiki.unity3d.com/index.php/UniMerge ...因此可以购买或从头开始编写。

您可以将场景文件保存为文本模式:Edit->Project Settings->Editor->Asset Serialization: Force Text

这种方式场景被保存为Yaml文件,有关格式的更多详细信息,请查看doc

尽管我有时会手动合并场景,但这不是一个微不足道的操作,您必须非常小心(git automerge 在 99% 的情况下无法正确合并它们)。

以下是您的团队如何设法处理同一个 Unity 场景文件并使用 Git 相当顺利地合并它。

  1. 将场景中的所有游戏对象设为预制件。这样,它们就可以单独编辑了。

  2. 忽略 .gitignore 文件中的场景文件。

  3. 无论何时在场景中进行更改,请务必将更改应用到预制件。

这样,无论何时拉取同事的回购协议,您都不会拉取他们的场景,而只是拉取他们场景中的预制件。因此,您的场景将根据您所有团队对预制件的所有最新更改自行重建,从而实现平滑的合并。

如果你的场景结构足够好,我认为这个系统会起作用。