如何使用Unity Smart Merge合并我的Unity场景?

时间:2018-09-19 03:24:12

标签: git unity3d merge scene

我正在尝试使用智能合并功能来合并我的伙伴和我一直在努力的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]?

冲突更多,但要列举的太多。

这是唯一未与我的本地分支合并的文件。有没有一种方法可以使这个场景合并?

谢谢!

2 个答案:

答案 0 :(得分:2)

我知道这并不是一个答案。 使用场景和git时,典型的最佳实践是一次只允许一个人在一个场景上工作。我们一直在使用“现场帽子”。

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

答案 1 :(得分:0)

我相信您应该通过在.gitattributes

中添加yamlmergetool,以确保yamlmergetool可以将.unity,.prefabs和其他任何内容作为纯文本(非二进制)处理。
*.unity merge=unityyamlmerge eol=lf
*.prefab merge=unityyamlmerge eol=lf

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

相关问题