事前準備(Force Text)¶
このツールは、プロジェクトの Asset Serialization が Force Text でなければ使えません。そうなっていない場合、ウィンドウ上部に赤い警告が出て、「参照を検査」ボタンが押せない状態になります。
なぜ Force Text が必要なのか¶
壊れた参照の元の GUID を知る手段が、それしか無いからです。
Unity の Editor から見ると、参照が壊れたフィールドはただの None です。「何を指していたか」の情報は API では取れません。しかし Prefab をテキストとして開けば、次のように壊れたままの参照がそのまま残っています。
m_SourcePrefab: {fileID: 100100000, guid: 3f2b1c... , type: 3}
このツールはこの行を直接読んで GUID を取り出し、それを手がかりに候補を探します。Binary で保存されていると、この行が読めません。
Binary / Mixed には対応していません
対応する予定もありません。回避策として Binary を読む経路を用意すると、書き換えの安全性を担保できなくなるためです。
変換する¶
ツールのウィンドウに出ている「このプロジェクトを Force Text に変換する」を押すと、確認ダイアログを経てプロジェクト設定が変わります。
Unity の設定画面から変える場合は次の場所です。
Edit > Project Settings > Editor > Asset Serialization > Mode: Force Text
どちらで変えても結果は同じです。
変換のコストを過小に見積もらないでください¶
変換はプロジェクト全体の再シリアライズを伴います
Force Text へ切り替えると、Unity はプロジェクト内のアセットを保存し直します。
- 大きなプロジェクトでは時間がかかります(数分以上かかることがあります)。
- バージョン管理に大量の差分が出ます。 ファイルの中身は同じでも、形式が変わるので全部「変更あり」になります。
- 変換の途中で Unity を強制終了しないでください。
変換の前に、Git へコミットするかプロジェクトをバックアップしてください。 ツールも変換前にこの警告を表示します。
変換したあと¶
変換を実行すると、ツールに「シリアライズモードを Force Text に変更しました」と表示されます。Unity 側の再シリアライズが落ち着いたことを確認してから、検査に進んでください。
赤い警告が消え、「参照を検査」ボタンが押せるようになっていれば準備完了です。
今後のために
Force Text は、参照切れの調査だけでなく、バージョン管理での差分確認や競合解決も現実的にします。VRChat のアバター改変プロジェクトでは、最初から Force Text にしておくことをおすすめします。