Version: 2021.2
言語: 日本語
プレハブバリアント
プレハブインスタンスの展開

複数レベルでのオーバーライド

他のプレハブ内やプレハブバリアント内でプレハブを使用する場合、オーバーライドは複数のレベルに存在し、同じオーバーライドが複数の異なるプレハブに適用されることもあります。

適用対象の選択

内部にネスト状態のプレハブを持つプレハブインスタンスがある場合、またはプレハブバリアントである場合は、どのプレハブにオーバーライドを適用するかを選択できます。

プレハブ “Vase” はプレハブ “Table” 内にネストになっていて、シーンには “Table” プレハブのインスタンスが含まれているとします。

Table プレハブ内にネストした Vase プレハブ
“Table” プレハブ内にネストした “Vase” プレハブ

このインスタンスで、“Vase” のプロパティがオーバーライドされている場合は、このオーバーライドを適用できる複数のプレハブがあります。“Vase” または “Table” です。

Overrides ドロップダウンウィンドウの Apply All ボタンは、外側のプレハブ (この場合は Table) にオーバーライドを適用することのみを許可します。ただし、コンテキストメニューから適用する場合や、Overrides ドロップダウンウィンドウの個々のコンポーネントの比較ビューから適用する場合には、適用対象の選択が可能です。

この例では、Apply to Prefab ‘Vase’ を選択すると、値は Vase プレハブアセットに適用され、Vase プレハブのすべてのインスタンスに使用されます。

また、Apply as Override as Prefab ‘Table’ を選択すると、値は Table プレハブ内にある Vase のインスタンスのオーバーライドになります。シーンのインスタンスのプロパティにはオーバーライドの印が無くなります。しかし、プレハブモードで Table プレハブを開くと、 Vase プレハブのインスタンスのプロパティがオーバーライドとしてマークされています。

Vase プレハブアセットが Table プレハブアセットのオーバーライドとして使用されているときも、Vase プレハブアセット自体はまったく影響を受けません。つまり、 Table プレハブのすべてのインスタンスがそれぞれの Vase プレハブインスタンスに新しい値を持つようになりますが、 Table プレハブに含まれない Vase プレハブの他のインスタンスは影響を受けません。

Vase プレハブ自体のプロパティが後に変更された場合、Vase プレハブのすべてのインスタンスに影響します。ただし、プロパティがオーバーライドされているものを除きます。Table プレハブ内の Vase インスタンスはオーバーライドされているため、変更は Table インスタンスに含まれる Vase インスタンスには影響しません。

内側のプレハブへの適用が外側のプレハブにも影響する場合

1 つ以上のプロパティを内部プレハブアセットに適用すると、外部プレハブアセットも同様に変更されことがあります。なぜなら、それらのプロパティのオーバーライドは外部プレハブで元に戻されるからです。

ここの例では、もし、Apply to Prefab ‘Vase’ が選択されると、Table プレハブがオーバーライド値を持つ場合、Table プレハブのこのオーバーライドは Apply to Prefab ‘Vase’ の選択と同時に元に戻され、インスタンスのプロパティは、適用されたばかりの値を維持します。このケースに当てはまらない場合は、インスタンスの値は適用されるとすぐに変更されます。


  • 2018–07–31 公開ページ

  • ネスト化したプレハブとプレハブのバリアントを 2018.3 で追加

プレハブバリアント
プレハブインスタンスの展開