コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】UnityYAMLMerge でシーンやプレハブのコンフリクトを解消する方法

はじめに

UnityYAMLMerge はシーンやプレハブのコンフリクトを
良い感じにマージできる公式のツールです

Fork や SourceTree などの Git クライアントのマージツールに
UnityYAMLMerge を指定しておくことで、シーンやプレハブが
コンフリクトした時のマージ作業を UnityYAMLMerge に任せられるようになります

この記事では Fork で UnityYAMLMerge を使用できるようにして
シーンやプレハブのコンフリクトを解消できるようにする方法を紹介していきます

目次

検証環境

  • Unity 2020.3.13f1
  • Windows 10
  • Fork 1.64.1.0

Fork への設定方法

f:id:baba_s:20210729165048p:plain

Fork メニューの「File > Preferences...」を選択して

f:id:baba_s:20210729165057p:plain

「Integration」タブの「Merge Tool」の欄を以下のように変更して「Close」を押します

項目 内容
Merge Custom
Merger Path 【Unity のインストール先のフォルダ】\Editor\Data\Tools\UnityYAMLMerge.exe
Arguments merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"

コンフリクトの解消方法

f:id:baba_s:20210729170049p:plain

例えば「add_button」と「add_text」の2つのブランチが存在しており、

f:id:baba_s:20210729170058p:plain

f:id:baba_s:20210729170100p:plain

「add_button」ブランチでは「Button」オブジェクトを SampleScene に追加し、

f:id:baba_s:20210729170103p:plain

f:id:baba_s:20210729170107p:plain

「add_text」ブランチでは「Text」オブジェクトを SampleScene に追加している状態で

f:id:baba_s:20210729170505p:plain

「add_text」ブランチを「add_button」ブランチにマージすると

f:id:baba_s:20210729170508p:plain

コンフリクトが発生しますが

f:id:baba_s:20210729170512p:plain

「Merge in external merger」を押して UnityYAMLMerge によるマージを行うことで

f:id:baba_s:20210729170515p:plain

f:id:baba_s:20210729170518p:plain

それぞれのブランチで追加したオブジェクトが正常にマージされて
シーンに配置されていることが確認できます

このように、UnityYAMLMerge を使用することで
シーンやプレハブのコンフリクトを解消できるようになります