はじめに
こんな感じでGitHubを使っている場合のお話です。主に自分が開発しているプロジェクトに対して修正依頼が来た場合にどのように対処しているかについて説明します。
UnityのPull Requestの課題: Sceneの変更
下記は少し古いですが、Unityを複数人で開発する場合の課題がまとまっています。
最近はUnityもかなり安定化し、Pull Request自体を処理できないとか、コンフリクトが解消できない、というようなことはあまり起こらないように思います。しかし、Sceneの変更を伴うPull Requestが来ると緊張します。なぜなら、どこを変更したのかが差分を見てもわからないからです。下図はオブジェクトを6つ追加した例でのPull Requestの一部ですが、Sceneに998行の変更が発生しており、これを見て問題ないと判断できる気はしません。
修正依頼者に悪気はなくても、実験的にいじったり、うっかり変更してしまったパラメータがPull Requestに紛れ込んでても受け入れ側は気が付かず、これを安易に受け入れてしまった後に挙動が変になってもなかなか原因がわからなくて大変な思いをすることがあります。
対処法1. Pull Requestを出さず、Prefabファイルを提供してもらう。
変更箇所を一つのGame Objectの下に集めて、これをPrefab化し、Prefabをエクスポートしてファイルを提供してもらえると、Sceneへの変更は自分で管理できるので安心です。
対処法2. Sceneの変更が発生していないPull Requestを出してもらう。
Prefabを作るところは同じです。Sceneへの変更をDiscardして、Prefab関連の修正だけをコミットして、Pull Requestを出してもらえると、受け手の手間が少なくなるのでうれしいです。
対処法3. Sceneの変更が発生しているPull Requestを出された場合に、受け手が頑張る。
一旦受け入れます。変更箇所を教えてもらい、Game Objectの下に集めてPrefab化し...は対処法1と同じ。エクスポート後にPull RequestをRevertしてPrefabをインポートして対応すればよいです。
対処法4. 数値変更レベルの修正であれば、Excelとかで変更指示書を作ってもらう。
配置しているコンポーネントの座標を変えたいとか、角度を変えたい、というような場合は、数次第ではありますが、ローテクで対応する方が安全な場合も多いです。
最後に
以上、どの方法でも良いのですが、とにかくSceneへの変更を受け入れてしまうと地獄を見るので、そこだけは責任者一人がしっかり管理するようにしておくべきだと思います。もっとうまいやり方があればぜひ教えてください。