Version: 2023.2
言語: 日本語
複数レベルでのオーバーライド
プレハブインスタンスの展開

未使用のオーバーライド

インスタンスのオーバーライド値は、それが定義されているシーンまたはプレハブにデータとして保存されます。しかし、オーバーライドのターゲットオブジェクトが無効であるか、または その プロパティパス が不明な場合、オーバーライドは “unused” (未使用) になります。この場合、データは未使用になります。それでも、シーンファイルに保存されてますが、余剰となります。

たとえば、プレハブにアタッチされた スクリプトpublic フィールド の値をオーバーライドしてから、そのスクリプトを削除すると、オーバーライド値を含むデータは、もはや存在しないオブジェクトを対象としているため、未使用になります。

また、public フィールドの定義を削除したり、名前を変更したりすると、オーバーライドデータも未使用になります。なぜなら、たとえ、コンポーネントオブジェクトそのものがまだ存在していたとしても、プロパティパス は保存されたデータと一致しなくなるためです。

Unityでは、未使用のオーバーライドデータを自動的に削除しないため、削除したスクリプトまたはフィールド定義を復元すると、そのオーバーライドデータが再び使用されるようになり、以前のようにオーバーライドとして適用されます。

未使用のオーバーライドデータを保持したくない場合は Inspector の Overrides メニューを使うか、Hierarchy ウィンドウのコンテキストメニューから削除できます。削除には未使用のオーバーライドがすべて含まれ、Unity は削除された内容の詳細を エディターログ に書き込みます。

Unity エディターは、未使用のデータをクリーンアップする時期やクリーンアップする必要があるかどうかを自動的に判断できません。なぜなら、データが参照するオブジェクトやプロパティを一時的または偶発的に移動した可能性があり、後で元に戻す可能性があるからです。不要になった未使用のオーバーライドデータを削除することは、シーンファイルに有用なデータのみが含まれていることを意味し、バージョン管理とコラボレーションがより簡単になるため、効率的な実施と言えます。

ノート: FormerlySerializedAsAttribute を使用することによって、pulic フィールドの名前を変更し、関連するオーバーライド値を保持することができます。

プレハブの Overrides ドロップダウン

Inspector を使用して未使用のオーバーライドを確認し削除するには、以下を行います。

  1. 対象となるゲームオブジェクト (複数可) を選択します。
  2. Inspector で Overrides ドロップダウンメニュー [A] をクリックします。未使用のオーバーライドがある場合は、メニューに “Unused overrides” オプション [B] が表示されます。未使用のオーバーライドがない場合は、“Unused overrides” オプションは表示されません。
  3. Unused Overrides をクリックして、未使用のオーバーライドパネルを開きます。
  4. unused overrides (未使用オーバーライド) パネル [C] には、未使用のオーバーライドが列挙され、Remove ボタンが表示されます。
  5. 未使用のオーバーライドを削除するには、Remove ボタンをクリックします。
unused overrides パネルで、選択したプレハブの未使用のオーバーライドを 2 つ表示されています
unused overrides パネルで、選択したプレハブの未使用のオーバーライドを 2 つ表示されています

ノート: unused overrides パネルは複数選択をサポートし、未使用オーバーライドの総数と影響を受けるインスタンスの数を表示します。ただし、以下の例のように、最大 3 つの未使用オーバーライドのフィールド名、ゲームオブジェクト名、値のみが表示されます。

未使用オーバーライドパネル。3 つの別々のプレハブインスタンスの 24 の未使用オーバーライドを表示
未使用オーバーライドパネル。3 つの別々のプレハブインスタンスの 24 の未使用オーバーライドを表示

Hierarchy コンテキストメニュー

未使用のインスタンスオーバーライドを確認し、Hierarchy ウィンドウから削除するには、以下を行います。

  1. 対象となるゲームオブジェクト (複数可) を選択します。
  2. Hierarchy ウィンドウで、選択したオブジェクトの 1 つを右クリックし Prefab > Remove Unused Overrides を選択します。
  3. Unity は、未使用のオーバーライドがある場合、その数を示すダイアログボックスを表示します。
  4. 未使用のオーバーライドを削除するには、Remove ボタンをクリックします。
Hierarchy ウィンドウのコンテキストメニューから未使用のオーバーライドを削除するときに表示されるダイアログボックス
Hierarchy ウィンドウのコンテキストメニューから未使用のオーバーライドを削除するときに表示されるダイアログボックス

ノート: 個々のゲームオブジェクトではなく、階層内のシーン名を右クリックすることで、シーン全体の未使用オーバーライドをすべて削除することができます。

複数レベルでのオーバーライド
プレハブインスタンスの展開