アセットシリアル化モード
Unity プロジェクトを開くと、Rider はプロジェクトの アセットシリアル化モードが 強制テキストに設定されているかどうかを確認します。 設定されていない場合は、一部の高度な機能にはテキストベースのシリアル化モードが必要であることを示す通知ポップアップが表示されます。
シリアル化モードの設定では、 .prefab、 .unity、 .asset などのアセットファイル(スクリプタブルオブジェクトからのものを含む)がバイナリまたはテキストとして保存されるかどうかを制御します。 バイナリはファイルサイズの面でより効率的ですが、保守性は低くなります。 テキストファイルはサイズが大きくなる場合がありますが、修正しやすく、ほとんどのソース管理システムでも扱いやすいです。バイナリファイルは差分比較やマージができません。 新しい Unity プロジェクトのデフォルトは Force Textです。
Rider はどのような「高度な統合機能」をサポートしていますか?
アセットモードが 強制テキストに設定されている場合、Rider は C# ファイルの場合とほぼ同じ方法で、アセット、プレハブ、シーンを解析してインデックスを作成します。 インデックスが作成されると、これらのファイルは 使用箇所の検索による Unity スクリプトコンポーネントの処理結果、およびイベントハンドラーとして使用されるメソッドとプロパティに含まれます。
使用箇所の検索の結果は、標準の 検索結果ツールウィンドウに Unity イベントハンドラーとしてグループ化されて表示されます。 Unity エディターが実行中で、プロジェクトに Rider のプラグインがインストールされている場合、Rider は 使用箇所の検索の結果も Unity 内のツールウィンドウに表示します。 ツールウィンドウ内の項目をダブルクリックすると、Unity の 階層ツールウィンドウ内でその項目が選択され、ハイライト表示されます。
さらに、イベントハンドラーとして使用されているメソッドまたはプロパティに Rename リファクタリング を使用すると、アセット、プレハブ、シーン内での使用箇所も名前が変更されます。 新しい名前を指定した後、Rider は名前変更の確認を求め、続行する前に Unity でファイルが保存されていることを確認するよう促します。 次へをクリックすると、アセットファイル内のメソッドの名前が変更されます。 Unity に戻ると、変更された開いているシーンを再読み込みするよう促されます。
強制テキストへのアップデートの影響
プロジェクトが Force Binaryまたは Mixedに設定されている場合、Rider は Force Textへ変更することを提案します。 ただし、Rider にはこれを自動的に行うためのクイックリンクは用意されてい ません。
これはプロジェクトにとって大きな変更であり、慎重かつ安全に実施されるべきです。 また、このような重要な変更は、他の変更を一切含まない単一の独立したコミットとしてソースコード管理システムに反映させることが重要です。 こうすることで、必要に応じて既知の状態にロールバックすることがはるかに容易になります。
Force Textに更新することは Rider の機能だけでなく、Unity でもこの設定が推奨されており、最近の Unity バージョンの新規プロジェクトのデフォルトです。 テキストファイルは保守しやすく、ほとんどのソース管理システムでより効率的に処理できます。バイナリファイルは差分やマージができません。
アセットファイルを手動で変更できると便利な場合もあります。 必ずしも推奨される方法ではありませんが、 .meta ファイルの名前変更や移動が正しく行われなかったために破損したアセット参照の GUID を手動で更新することは可能です。 Rider は .meta ファイルを正しく最新の状態に保ち、 名前変更リファクタリングはテキストベースのアセットファイルも正しく更新します。
プロジェクトを Force Binaryまたは Mixedモードから変換するには、 エディター設定ダイアログで アセットシリアル化の値を変更する必要があります。 設定を変更すると、すべてのアセットが新しい形式で即座に再シリアル化されますが、非常に大規模なプロジェクトの場合は時間がかかる場合があります。
ノート
アセットのサイズや種類によっては、常にバイナリ形式でシリアル化されるアセットもあります。 たとえば、 LightingData.asset や NavMesh.asset は通常、膨大な数値配列であり、これらの特定のファイルをバイナリ形式でシリアル化する方がはるかに効率的です。 また、スクリプト可能なオブジェクトクラスに [PreferBinarySerialisation] 属性がある場合、そのファイルはバイナリ形式でシリアル化されます。 Rider はこれらのファイルを解析しません(通常、イベントハンドラーへの参照が含まれていないため、これは問題ありません)。
また、Rider はアセット、プレハブ、シーンを解析しますが、プロジェクトの規模が非常に大きい場合は、パフォーマンス上の理由から解析を自動的に無効にすることに注意してください。
テキストとしてシリアル化されたファイルは、YAML ファイルとしてシリアル化されます。 ファイル形式の詳細については、 Unity のドキュメント(英語)を参照してください。