Unity 內(nèi)部集成的版本合并工具,可用于第三方版本管理工具解決 Scene 和 Prefab 沖突問題
本文譯自官方手冊(cè)
原文地址:Unity工具—版本合并UnityYAMLMerge
前提
使用第三方版本管理工具需先將 Unity 的
Edit > Project Settings > Version Control 選項(xiàng)改為
Visible Meta Files-
Edit > Project Settings > Asset Serialization 選項(xiàng)改為
Force Text該操作是將 Unity Asset 文件的內(nèi)容由二進(jìn)制格式改為 yaml 文本格式,以便于版本管理識(shí)別
工具位置
Windows下,Unity 安裝目錄下
C:\Program Files\Unity\Editor\Data\Tools\UnityYAMLMerge.exe
or
C:\Program Files (x86)\Unity\Editor\Data\Tools\UnityYAMLMerge.exe
Mac OSX,右鍵顯示包內(nèi)容
/Applications/Unity/Unity.app/Contents/Tools/UnityYAMLMerge
使用方法
P4V
- 配置 > 合并(Preference > Merge)
- 選擇其他應(yīng)用 (Other application)
- 點(diǎn)擊添加(Add) 按鈕
- 在擴(kuò)展區(qū)選擇
.unity - 在應(yīng)用欄(Application)輸入
UnityYAMLMerge路徑 - 在參數(shù)欄(Arguments)輸入
merge -p %b %1 %2 %r - 點(diǎn)擊保存(Save)
Git
配置 Git,添加以下內(nèi)容到.git或.gitconfig文件
[merge]
tool = unityyamlmerge
[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = '<path to UnityYAMLMerge>' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
Mercurial
添加以下內(nèi)容到.hgrc文件
[merge-patterns]
**.unity = unityyamlmerge
**.prefab = unityyamlmerge
[merge-tools]
unityyamlmerge.executable = <path to UnityYAMLMerge>
unityyamlmerge.args = merge -p --force $base $other $local $output
unityyamlmerge.checkprompt = True
unityyamlmerge.premerge = False
unityyamlmerge.binary = False
SVN
添加以下內(nèi)容到~/.subversion/config
[helpers]
merge-tool-cmd = <path to UnityYAMLMerge>
TortoiseGit
打開 配置 > 差異查看器 > 合并工具 點(diǎn)擊高級(jí) (Preferences > Diff Viewer > Merge Tool 點(diǎn)擊 Advance)
在擴(kuò)展名下拉欄選擇
.unity-
在擴(kuò)展程序區(qū)輸入
<path to UnityYAMLMerge> merge -p %base %theirs %mine %merged
PlasticSCM
配置 > 合并工具 點(diǎn)擊添加按鈕 (Preferences > Merge Tool 點(diǎn)擊 Add)
選擇外部(External)合并工具
選擇使用下方路徑文件(Use with files that match the following pattern)
添加
.unity后綴-
輸入指令
<path to UnityYAMLMerge> merge -p "@basefile" "@sourcefile" "@destinationfile" "@output"
SourceTree
- 工具 > 選項(xiàng) > 差異(Tools > Options > Diff)
- 合并工具下拉欄選擇自定義 (Custom)
- 在合并指令欄(Merge Command)輸入U(xiǎn)nityYAMLMerge的路徑
- 在參數(shù)欄(Arguments)輸入
merge -p $BASE $REMOTE $LOCAL $MERGED