バージョン管理しているUnityプロジェクトでやってはいけないこと
掲載日: 2025/07/10
バージョン管理しているUnityプロジェクトでやってはいけないこと
現在のゲーム開発環境では、UnityやUnrealEngineのようなゲームエンジンを活用し、
クラウドやバージョン管理ツールを使って複数人でデータを管理する、このような光景がすっかり当たり前になりました。
その一方で様々な人がツールやデータの扱い方についての癖を理解出来ずにデータを破損してしまったり謎のエラーを生み出してしまっていたりします。
今回はそんな中で今後増えてきそうなデータ移動についての注意点について解説します。
1. 現象:整理したデータが他のPCで破損して見える
・前提
主にSVNのようなバージョン管理ツールを使用して他のPCとデータ共有する際に起こる問題です。
プロジェクト初期に起こりがちな、テストや検証で適当なフォルダに作成してしまったデータを整理する際に起こります。
・行ったこと
テスト等で作業した未整理のデータを整理するため、正式なプロジェクトフォルダにデータを移動させてSVNにアップしました。
・結果
自分の環境では問題無く表示されるデータが、他PCの環境ではデータの参照先がおかしくなっており、データ破損やリンク切れが発生しました。
・備考
この現象は他PCの環境でデータを修復すると、今度は自分のPC環境で破損した状態になります。
これはバージョン管理ツールで同じデータを共有しているにも関わらず、環境によってデータに差異が出ることになるので、解決できない問題になってしまいます。
2. 原因:データを移動後バージョン管理ツールで共有した
・更新したはずのデータが他のPCでは更新されていない
データ構成や配置は更新されているので、一見更新成功しているように見えますが、
3Dモデル(FBX)に登録されているマテリアルやテクスチャ等が更新されない現象があります。
・各データはGUIDを保持している
Unity内の各データは固有のGUID※を保持しており、データ移動後にファイル共有し、
他のPC環境で同じGUIDを持ったデータと重複すると、参照先でエラーが生じてしまいます。
※GUID=ソフトウェアが何らかの対象を識別するための符号形式
・バージョン管理ツールがスルーしてしまう
バージョン管理ツールは新規作成や変更があった際にはデータを更新しますが、
移動したデータではGUIDが新たに発行されないため、変更無しとして素通りしてしまいます。
従ってバージョン管理ツールは直接の原因ではありませんので、SVNやGitに関係なく発生する可能性があります。
3. 対処:移動ではなくコピーして差し替える
・ツール等活用してコピーしたものを使用する
流用ではなく新規のGUIDを持ったデータに複製して、それに差し替えて使用することが
一番ミスや問題を起こさない点になります。
エンジニアがいるのであれば、コピーツールを作ってもらえると良いですね。
・横着しない
現行のUnityは大規模開発に対応できるようになっています。
筆者もかつては問題無いと思っていた方法で作業した結果、今回のような問題に遭遇したので、
データ管理はエンジニアやTAのような仕組みに詳しい人や、面倒でも複製したデータを用意して安全なデータ管理を心掛けてみてください。
4. 他に起きた問題と対策
今回の問題が起きた際に、関連してExport Packageについての問題があったので合わせて解説します。
・現象:Export Package時に参照外のデータが含まれる
Export Packageをする際に、参照する意図や必要のないデータ(今回の場合はテクスチャ)が参照されたまま外せないことがあります。
・原因:シェーダー切り替え時に、前に登録されているテクスチャが残っている
例えば、シェーダーAにテクスチャを登録したままシェーダーBに切り替えると、
シェーダーによっては、Aに登録したテクスチャが残っていることがあります。
(見た目にはBのシェーダーが適用されているのでAのテクスチャは表示されない)
・対策
これはシェーダーの仕様(バグ)のため、事前に対応するのは難しいかもしれません。
もしこのような現象が起きた際は参照されているデータを削除するか、削除が難しいならマテリアルのチェック(Aのシェーダーに戻してみてテクスチャが残っているか確認する)をしてみてください。
■まとめ
今回はUnityの比較的限定的な事例を挙げましたが、実際筆者が遭遇した際、Unityの掲示板等でも解決方法が見つからなかったため記事にしてみました。
内容的にはエンジニア寄りですが、特に仕組みやシステム的な構造に疎いデザイナー等には重要なお話かと思いました。
新しいUnityは機能も多く便利になっていますが、予期しない問題が起きることもあるようなので、もし同じようなことに遭遇した際に役に立てれば幸いです。