【问题标题】:How can I merge my Unity Scene using Unity Smart Merge?如何使用 Unity Smart Merge 合并我的 Unity 场景?
【发布时间】:2018-09-19 03:24:11
【问题描述】:

我正在尝试使用 Smart Merge 合并我的搭档和我一直在处理的 Unity 场景。我的其他资产和预制件很好地解决了与 Smart Merge 的冲突;但是,一个场景根本没有合并。

在我添加的 .git/config 文件中

[merge]
tool = unityyamlmerge
[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = 'C:\\Program Files\\Unity\\Editor\\Data\\Tools\\UnityYAMLMerge.exe' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"

我还包含一个 .gitattributes 文件,其中包含

*.unity binary
*.prefab binary
*.asset binary

我已将资产序列化设置为“强制文本”并将版本控制设置为“可见元文件”。

我们的预制件和其他资产合并得很好,但我们的一个场景根本没有合并。

在终端中运行git mergetool 命令时,会显示此指定场景的冲突,但最后会返回:

Left  563852304.Light.m_Color.r add as 0.8962264
Right 563852304.Light.m_Color.r add as 0.9433962
Left  610301896.GameObject.m_IsActive add as 0
Right 610301896.GameObject.m_IsActive add as 1
Left  610301898.Transform.m_LocalPosition.x add as -13.07
Right 610301898.Transform.m_LocalPosition.x add as -14.31
Left  610301898.Transform.m_LocalPosition.y add as 2.6
Right 610301898.Transform.m_LocalPosition.y add as 2.14
Left  610301898.Transform.m_RootOrder add as 8
Right 610301898.Transform.m_RootOrder add as 7
Left  869912137.Transform.m_LocalPosition.x add as -7.36
Right 869912137.Transform.m_LocalPosition.x add as -7.333
Left  869912137.Transform.m_LocalScale.x add as 4
Right 869912137.Transform.m_LocalScale.x add as 4.0070143
Conflict handling:
Xmas-Prototype-01/Assets/_Scenes/InitScene.unity seems unchanged.
Was the merge successful [y/n]?

还有更多的冲突,但太多了,无法一一列举。

这是唯一没有与我的本地分支合并的文件。有没有办法让这个场景合并?

谢谢!

【问题讨论】:

    标签: git unity3d merge scene


    【解决方案1】:

    我知道这不是一个很好的答案。 使用场景和 git 时的典型最佳实践是一次只让一个人处理场景。我们一直在使用“场景帽”。

    我们一直在做的事情(独立工作室)是 additively load multiple scenes,所以关卡设计师有一个场景没有功能可以工作,而程序员(他们不需要很多时间来处理一个场景) 有一个“引导”场景,其中包含游戏功能。

    【讨论】:

    • “场景帽”是指第二段中的描述(一个好的策略),还是别的什么?
    【解决方案2】:

    我相信您应该确保 yamlmergetool 可以将 .unity、.prefabs 和其他任何内容作为纯文本(不是二进制)添加到您的 .gitattributes

    *.unity merge=unityyamlmerge eol=lf
    *.prefab merge=unityyamlmerge eol=lf
    

    YAML 让我烦恼的一件事是,通过场景中的编辑添加文本的位置似乎毫无意义。如果您将 GameObject 添加到场景列表的最底部,它会出现在 YAML 源中的随机位置。如果您移动它,而不是移动源代码,它会更改名为m_RootOrder 的属性以反映根的零索引顺序。当 yamlmergetool 启动时,它很快就会感到困惑,因为源代码编辑器正在处理看起来相同的行号 + 代码块。正如@thefragen 所指出的,解决此问题的一个好方法是让您的协作者在不同的场景中工作,以避免潜在的合并问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      相关资源
      最近更新 更多