【问题标题】:Merge Unity 3D scene with Git将 Unity 3D 场景与 Git 合并
【发布时间】:2015-04-06 11:12:09
【问题描述】:

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

提前致谢。

【问题讨论】:

  • 您应该手动合并它们,然后“添加”文件的最新版本。更好的工作流程是一次只让一个人改变某个场景。
  • 无论是 WinForms,对于任何可视化的并发编辑都毫无意义; XAML; .PNG;或PSD。一个已建立的 Unity 游戏团队在 Unity 演讲中提出的一个建议是,根本不要通过设计师在场景中放置任何东西,而是在运行时使用代码通过预制件实例化所有东西。。跨度>
  • @MickyDuncan:那么,在那种情况下,关卡设计呢?例如,从 XML 文件制作关卡不像通过编辑器制作那样直观。
  • @BawenangRukmokoPardianPutra 您不应该将 Unity3D 视为 关卡设计师。 Unity在他们的谈话中已经说过了。艺术家通常不会使用 Unity,他们使用其他工具 - 许可是原因之一。 Unity 应该用于在运行时加载关卡。使用 Unity3D 进行模型设计也是如此,这就是为什么会有 Blender、3ds 等工具的原因

标签: git version-control unity3d merge


【解决方案1】:

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

  1. 制作场景预制件中的所有游戏对象。这样,它们都可以单独编辑。

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

  3. 每当您在场景中进行更改时,请务必将更改应用到您的预制件。

这样,每当您拉取同事的存储库时,您并不会拉取他们的场景,而只是拉取他们场景中的预制件。因此,您的场景将使用您所有团队对预制件的所有最新更改进行自我重建,从而实现平滑的合并。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 嗯,同时有两个很好的建议。我希望我能接受这两个答案。但是恕我直言,您的答案更好。谢谢。
    • “通常在'源'存储库中保存二进制对象是有争议的想法” - 这可以说是过于宽泛了。 编译过程中产生的二进制文件 - yes; 构建项目所需的二进制文件 - no。例如在我的 Web 项目中,我们将 .PNG 添加到 SCM,因为它们是编译所必需的;部署;并由团队的其他成员使用。同样我们添加audio视频 和 Unity 的其他媒体。可能不同的是您有两个不同的存储库;一个用于源代码,一个用于资产,正如其中一个开发团队在 Unity Talk 视频中概述的那样
    【解决方案3】:

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

    这种方式场景保存为Yaml文件,更多格式请看doc

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

    【讨论】:

    • 嗯,同时有两个很好的建议。我希望我能接受这两个答案。谢谢。
    • Force Text 绝对有帮助。 Unity 还可以任意重新排序您的场景,因此像 Scene Merge 或这个家伙的分类器这样的工具也有助于首先避免冲突。场景合并:assetstore.unity3d.com/en/#!/content/5412 分类器:forums.playstaxel.com/threads/unity-and-git.228
    • @scone - Scene Merge 的问题在于它通过强制您通过 Create Snapshot 执行非 Git 快照来在 SCM 中创建 SCM b> 在 Unity 中。如果我忘记这样做会怎样?
    • 这是真的。它远非完美。 Unity 还有一个 YAML 合并工具,随当前版本一起提供。
    • @scone - 对我们来说,YAML 合并工具似乎总是失败并依靠手动 diff 工具。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 2013-06-25
    • 2018-02-18
    相关资源
    最近更新 更多