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