孙广东 2015.6.14
在UNity5.x之前的版本, 我们用文本编辑器如 sublime text 打开.unity .prefab时是可以看到 yaml格式的文本内容, 但是在 UNity5.x 当在察看.unity .prefab文件时已经变成二进制的文件了。【对不起啊,这里我要纠正一下,我当时的Unity版本是5.0打开是二进制。其中发生了一个下问题,就是特效使用的是5.1他给我的特效预制体Prefab在我这里完全显示不出来,就是不能识别。后来知道版本不对。 我升级到5.1后,在打开.unity .prefab时是可以看到仍然是 yaml格式的文本内容】当然了,这个序列化方式是可以进行设置的:
先来看看Unity为我们提供的内部工具:Smart Merge(智能合并)
Unity采用了一种称为UnityYAMLMerge的东西,可以在语义正确的情况下合并场景和预制文件的一个工具。该工具可以从命令行中访问,另外还提供给第三方版本控制软件接口。
在编辑器设置(菜单: ),您可以选择一个第三方版本控制工具 (例如Perforce 或 PlasticSCM)。当启用这些工具之一,您将看到Smart Merge(智能合并)版本控制标题下的菜单。菜单有四个选项:
Unity 编辑器附带UnityYAMLMerge 工具 ;假设Unity装在标准的位置,将会看到 UnityYAMLMerge 的路径:
C:\Program Files\Unity\Editor\Data\Tools\UnityYAMLMerge.exe
or
C:\Program Files (x86)\Unity\Editor\Data\Tools\UnityYAMLMerge.exe
......有 Windows 和
/Applications/Unity/Unity.app/Contents/Tools/UnityYAMLMerge
......有 Mac OSX (使用从 Finder显示包内容命令,以访问此文件夹)。
UnityYAMLMerge 附带一个默认回退的文件 (在Tools 文件夹中也称为 mergespecfile.txt),它指定应如何处理未解决的冲突或未知的文件。这还允许您使用它作为版本控制系统 (如 git)的主要的合并工具,没有自动选择合并工具基于文件扩展名,在 mergespecfile.txt 中已经列出最常用的工具,但您可以编辑此文件以添加新的工具或更改选项。
您可以从命令行 (您可以看到完整的使用说明通过运行不带任何参数) 运行 UnityYAMLMerge 作为一个独立的工具。常见的版本控制系统的设置说明如下。
.unity
.然后,按照同样的程序,以添加.prefab
扩展名。
将以下文本添加到您的.git
或.gitconfig
文件中:
[merge]
tool = unityyamlmerge
[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = '' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
下面的文本添加到.hgrc
文件中:
[merge-patterns]
**.unity = unityyamlmerge
**.prefab = unityyamlmerge
[merge-tools]
unityyamlmerge.executable =
unityyamlmerge.args = merge -p $base $other $local $output
unityyamlmerge.checkprompt = True
unityyamlmerge.premerge = False
unityyamlmerge.binary = False
您的~/.subversion/config
文件中添加以下内容:
[helpers]
merge-tool-cmd =
.unity
。 merge -p %base %theirs %mine %merged
然后,按照同样的程序,以添加.prefab
扩展名。
.unity
扩展名。 merge -p “@basefile” “@sourcefile” “@destinationfile” “@output”
然后,按照同样的程序,以添加.prefab
扩展名。
merge -p $BASE $REMOTE $LOCAL $MERGED
在Arguments 文本字段中。接下来我们就来看看 UNity 做的快速和高效的 yaml 合并:
感兴趣的读一读这篇文章:
http://blogs.unity3d.com/2015/06/02/how-we-do-fast-and-efficient-yaml-merging/
最后呢给大家介绍一个Unity的插件: UniMerge
关于他的文档在这里,大家可以看一看:http://wiki.unity3d.com/index.php/UniMerge
特别是冲突窗口的合并功能 也是挺好的。