【Unity】gitignoreのファイルで追跡するもの、しないものを設定しておくと安心

【Unity】gitignoreのファイルで追跡するもの、しないものを設定しておくと安心

Unityのプロジェクトを作成して、バックアップ用途だったり、他の人との共同開発だったりの目的でgithubにリポジトリを作成してコミットしておく、という流れはよくあるものです。

この時、.gitignoreのファイルに書かれている設定によっては必要なファイルが共有されてなくて、クローンしたプロジェクトでエラーが出まくった、なんてこともあったりします(1敗)

まずはgithubが提供しているよく使われるテンプレートを使ってみて、プロジェクト内で使用するライブラリやアセットに応じて調整していくと良いかと思います。

 

 

githubが提供しているテンプレート

上で触れたテンプレートは以下のページから確認できます。

 

現在は、github上でUnityのリポジトリを作成する際に上記のテンプレートの.gitignoreを含められるようになっています。昔作ったリポジトリだと.gitignoreファイル内に、近年のUnityで使うファイルが入っていないこともあるので、定期的にテンプレートと比較しておくと良いかと思います。

 

githubでのプロジェクト共有

Unityのプロジェクトをgithubで共有したいケースは多くて、

  • バックアップ用途
  • 複数の環境での開発
  • 複数人での開発

あたりは主要な用途かと思います。

 

バックアップ用途

バックアップ用途だと、PCが壊れるケースに備えてgithubにバックアップしておくイメージです。ローカルのgitで管理するケースも良いかと思いますが、PCはいつ壊れるか分からないのが怖いので、継続してゲーム開発を行う上では使っているPCの外にバックアップしておくと安心です。

最近はコードが書かれたファイルの中身を見るブラウザも使いやすくなったため、別のブランチで加えた変更を参照する、といった流れもやりやすくなりました。コミットのサマリーからは差分を確認できますが、時には全文を確認しておきたいこともあるので便利です。

 

複数の環境での開発

上のバックアップ用途に近いですが、出先では取り回しのよいMacBookAirで開発、家ではパワーのあるMacBookProで開発、なんていう複数の開発環境を持っている場合は、作業内容を共有するためにgithubにプッシュしておくことも多々あります。私の場合はmacとWindowsそれぞれで開発を進める際にprivateのリポジトリにプッシュします。

別のマシンでも同じく開発を進められる環境が再現できることを確認しておくのは重要で、この後触れる複数人での開発においては、最初にgithubを通して開発環境の足並みを揃えておきたいので、まずは自分の持っている環境を使ってそれが再現できるか確認しておくと手間が減らせます。

「あれがコミットされていません」「これが入っていません」とSlackでやりとりするのは割としんどいですからね。多分みんな「いつものチュートリアルだな」くらいの感覚ではいますが、最初からいい感じに共有できているのに越したことはありません。

 

複数人での開発

同じオフィスにいようと、リモートで作業していようと、ひとつのプロダクトを作る上ではベースとなるファイルの保管場所が必要です。githubのリポジトリを正にして、ブランチを切って作業していくことが多いかもしれません。

2人で同じシーンを編集してしまってコンフリクトが発生、マージで泣きを見る、みたいなケースはよくあるので、大きなシーンは分割しておくか、Prefabを作っておいてそちらを変更する形にすると安心です。シーン内でも3Dオブジェクトを配置する親オブジェクト、サウンド関連を管理する親オブジェクト、コード類を管理する親オブジェクト、なんて感じでカテゴリごとにPrefabを用意するとシーンへの直接の変更を減らせます。カテゴリ内でも小分けにしていくことで、作業時の重複編集を減らせます。

作業内容によっては、.gitignoreの内容を変更が必要になるケースも出てくるので、他のチームメンバーへの影響を考えつつ変更したりします。経緯を追えてないと、急にコミットする対象のファイルが増えてびっくりすることも。Slackでちゃんと共有しておきましょう(1敗)

 

コミットに含めたいファイルたち

gitignoreのテンプレートファイルを使っている場合でも、以下のファイルがコミットされているかどうかはちゃんと確認しておくと安心です。

  • .metaファイル
  • ProjectSettingsの下の.asset

 

.metaファイル

「Unityエンジニアを泣かせたいなら.metaファイルをコミットするな」という格言が出てくるくらいには大切な.metaファイル。……格言は今考えたのでそんなこと言う人はいないのですが、.metaファイルがないと大変なことになるのでぜひコミット対象に含めてください(涙目)

.metaファイルはプロジェクト内のGUIDが書かれているファイルで、アセットなどを一意に管理しています。例えばシーン内からオーディオや画像のアセットを参照している場合、GUIDを使って特定しています。

.metaファイルがない場合、こうした参照関係が分からない状態になるため、共有されたプロジェクトを開いたときにNullReferenceExceptionがたくさん乱舞していたりします。

.gitignoreに書かれていなければ.metaファイルたちは管理対象になるはずですが、もし管理対象になっていない場合は.gitignoreのファイルにて、先頭に「!」をつける形で指定することで、無視しないようになります。以下はイメージです。

 

ProjectSettingsの下の.asset

ProjectSettingsのフォルダにある.assetのファイル類は、プロジェクトのタグの設定だったり、Playerの設定だったりと、重要な設定が記載されています。これらのファイルについても、テンプレートの.gitignoreを使えば無視されないはずですが、プッシュされたリポジトリを確認すると実はいなかった、なんてことも稀によくあるのでしっかりと確認しておきましょう。

もしいなかった場合は、上と同様に先頭に「!」をつける形で指定して含めておきましょう。以下はイメージです。

3Dのゲームを作っている場合はタグやレイヤーが共有されないと大変ですし、2Dのゲームを作っている場合はSortingLayerが共有されないとタイルの表示順などもおかしくなります。こちらも共有は忘れずに(1敗)

 

まとめ

.gitignoreはバージョン管理の対象に含めないものを指定するファイルです。例えば容量の大きいファイルや、パスワードやAPIキーなどの機密情報が書かれたファイルなどは共有されないようにしておくと安心です。

しかし、ここの記載によっては必要なファイルが共有されていないケースもあったりするので、.gitignoreに書かれている内容を精査しつつ、必要に応じて無視しない設定を追加するのも良いかと思います。

 

     

ゲーム開発の攻略チャートを作りました!

CTA-IMAGE

「ゲームを作ってみたいけど、何から手を付けていいか分からない!」


そんなお悩みをお持ちの方向けに、todoがアプリをリリースした経験を中心に、ゲーム作りの手順や考慮すべき点をまとめたe-bookを作成しました。ゲーム作りはそれ自体がゲームのように楽しいプロセスなので、「攻略チャート」と名付けています。


ゲームを作り始めた時にぶつかる壁である「何をしたら良いのか分からない」という悩みを吹き飛ばしましょう!