インスタンスのオーバーライド値は、それが定義されているシーンまたはプレハブにデータとして保存されます。しかし、オーバーライドのターゲットオブジェクトが無効であるか、または その プロパティパス が不明な場合、オーバーライドは “unused” (未使用) になります。この場合、データは未使用になります。それでも、シーンファイルに保存されてますが、余剰となります。
たとえば、プレハブにアタッチされた スクリプト の public フィールド の値をオーバーライドしてから、そのスクリプトを削除すると、オーバーライド値を含むデータは、もはや存在しないオブジェクトを対象としているため、未使用になります。
また、public フィールドの定義を削除したり、名前を変更したりすると、オーバーライドデータも未使用になります。なぜなら、たとえ、コンポーネントオブジェクトそのものがまだ存在していたとしても、プロパティパス は保存されたデータと一致しなくなるためです。
Unityでは、未使用のオーバーライドデータを自動的に削除しないため、削除したスクリプトまたはフィールド定義を復元すると、そのオーバーライドデータが再び使用されるようになり、以前のようにオーバーライドとして適用されます。
未使用のオーバーライドデータを保持したくない場合は Inspector の Overrides メニューを使うか、Hierarchy ウィンドウのコンテキストメニューから削除できます。削除には未使用のオーバーライドがすべて含まれ、Unity は削除された内容の詳細を エディターログ に書き込みます。
Unity エディターは、未使用のデータをクリーンアップする時期やクリーンアップする必要があるかどうかを自動的に判断できません。なぜなら、データが参照するオブジェクトやプロパティを一時的または偶発的に移動した可能性があり、後で元に戻す可能性があるからです。不要になった未使用のオーバーライドデータを削除することは、シーンファイルに有用なデータのみが含まれていることを意味し、バージョン管理とコラボレーションがより簡単になるため、効率的な実施と言えます。
ノート: FormerlySerializedAsAttribute を使用することによって、pulic フィールドの名前を変更し、関連するオーバーライド値を保持することができます。
Inspector を使用して未使用のオーバーライドを確認し削除するには、以下を行います。
ノート: unused overrides パネルは複数選択をサポートし、未使用オーバーライドの総数と影響を受けるインスタンスの数を表示します。ただし、以下の例のように、最大 3 つの未使用オーバーライドのフィールド名、ゲームオブジェクト名、値のみが表示されます。
未使用のインスタンスオーバーライドを確認し、Hierarchy ウィンドウから削除するには、以下を行います。
ノート: 個々のゲームオブジェクトではなく、階層内のシーン名を右クリックすることで、シーン全体の未使用オーバーライドをすべて削除することができます。