Unityチーム開発 with Git & GitHub

Unityでチーム開発を行う際にバージョン管理にGitを使う際のポイントを解説していく。

この記事の対象者

○Unityの基本的なゲーム開発ができる
○GitとGitHubを普段触っている
上記2点はこの記事を読むにあたって必須となる。
また、Git操作はコマンドラインからの入力を前提としViエディタでの作業も少し出てくるのでViの基本操作を理解していることが望ましい。

Unityのバージョンをあわせる

まずは最も重要なポイントがUnityのバージョンをチーム全員完全に一致させることだ。Unityは2019年度版からUIが変わり動作全体が重くなったのでチームに貧弱なPC環境な人がいるとその人がもっさり地獄と戦うこととなる。5年以上前のPCを使っているメンバーなどがいる場合は[2018.4.36f1]あたりのバージョンが動作が軽くおすすめだ。古いバージョンのインストーラーはここから

Gitの設定

環境による改行コードの違いがコンフリクト要因の一つになる。改行コードを[LF]に統一しておけば、MacやWinなどが混在しても問題は起こらない。
MacやLinuxはもともとLFなのでWinの場合はLFCRに変換してしまわないようにターミナルから以下を設定しておく

$ git config --global core.autocrlf false

いざ実践!

ではここからはいつものように一緒に手を動かしながら実践していこう。
バージョンを指定して3DでGitSampleを作成する。

Editorの設定

ProjectSettingsを開きEditorから
Version Control ->Visible Meta FIles
Asset Serialization -> Force Text
に設定する

gitigonoreの設定

ターミナルで作成されたプロジェクトフォルダに移動する。

このフォルダをgit管理していくわけだが、Unityはゲーム作成時に多くの中間ファイルなどを生成するためgit管理が煩雑になってしまう。そこでバージョン管理が不要なファイルは管理から外してしまおう。
以下のURLにアクセス
https://github.com/github/gitignore/blob/main/Unity.gitignore
ファイルの内容をコピーしてクリップボードに入れる。

viで.gitignoreファイルを作成する

$ vi .gitignore

クリップボードの内容を貼り付けて、最後にmacユーザーがいることも考えて2行追記し、保存する。

確認

今の状態を確認しよう。以下のコマンドでフォルダ内をリスト表示

$ ls -la

git init

git管理の全てはここから始まる。

$ git init

これで.gitフォルダが作成されこのフォルダがgit管理できるようになる。

mergetoolの設定

Unityは同一シーンに異なる変更を加えるとすぐにコンフリクトが発生する。
このUnity作業時のmergeの際に発生するコンフリクトを良きに計らってくれるツールがあるのでそれを使えるように設定しておこう。

UnityYAMLMergeを探す

Macの場合はUnityYAMLMerge、
Winの場合はUnityYAMLMerge.exeの場所を探す。
Macの場合は

/Applications/Unity/Unity.app/Contents/Tools/UnityYAMLMerge

UnityHubを使ってインストールした場合は

/Applications/Unity/Hub/Editor/2018.4.23f1/Unity.app/Contents/Tools/UnityYAMLMerge

Winの場合は

C:\Program Files\Unity\Editor\Data\Tools\UnityYAMLMerge.exe

UnityHubを使ってインストールした場合は

C:/Program Files/Unity/Hub/Editor/2018.4.36f1/Editor/Data/Tools/UnityYAMLMerge.exe

といった場所にあるので自分の環境でどこに入っているのかを探し、テキストエディタなどにパスを貼り付けておく

.git/configに以下を追記

先程git initをした際にできている.gitフォルダ内にconfig ファイルというのがあるのでそれを開き以下を追記する。「UnityYAMLMergeのパス」の部分には先程エディタに貼り付けたパスを入れること。

[merge]
    tool = unityyamlmerge
[mergetool "unityyamlmerge"]
    trustExitCode = false
    cmd = "UnityYAMLMergeのパス" merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"

具体例)
Mac

[merge]
    tool = unityyamlmerge
[mergetool "unityyamlmerge"]
    trustExitCode = false
    cmd = "/Applications/Unity/Unity.app/Contents/Tools/UnityYAMLMerge" merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"

Win

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

実際にviでconfigを開き編集している様子

FallBackツールの設定

FallBackツールを設定しておくことでコンフリクトが発生した際に開くツールを設定できる。ここではWinでもMacでも使えるP4Mergeをインストールしていこう。まずは以下の公式からプラットフォームにあわせたP4Mergeをダウンロード
P4Mergeの公式ページ
この際、Skip registrationを選択すると細かい入力が必要がなく楽だ。

イントールされたパスを確認

ここでもインストールされたパスを確認しておこう。
Mac

/Applications/p4merge.app/Contents/MacOS/p4merge

Win

C:/Program Files/Perforce/p4merge.exe

mergespecfile.txtファイルの作成

UnityYAMLMergeと同じ階層(フォルダ)にmergespecfile.txtというファイルがあるのでUnityYAMLMergeでコンフリクトを解消できなかった際に起動するツールをP4Mergeに設定する。具体的には以下のようにP4Merge以外のマージツールを消して保存する(この際、書き込み権限がなかった場合は管理者で実行する)
以下のように1行だけ記述して他を消して良い

Mac


* use "%programs%/p4merge.app/Contents/Resources/launchp4merge" "%b" "%r" "%l" "%d"

Win


* use "%programs%\Perforce\p4merge.exe" "%b" "%r" "%l" "%d"


準備完了!!

これでやっとUnityチーム開発の準備が完了だ。次回はいよいよUnityで実際に開発をしていく。

コメント

タイトルとURLをコピーしました