Version: 2019.4
ネスト状のプレハブ
複数レベルでのオーバーライド

プレハブバリアント

プレハブバリアントは、一揃いの事前定義されたプレハブのバリエーションを使用したい場合に便利です。

For example, you might want to have several different types of GermSlimeTargets in your game, which are all based on the same basic GermSlimeTarget Prefab. However you may want some GermSlimeTargets to carry items, some to move at different speeds, or some to emit extra sound effects.

To do this, you could set up your initial GermSlimeTarget Prefab to perform all the basic actions you want all GermSlimeTarget to share, then you could create several Prefab Variants to:

  • Make a GermSlimeTarget move faster by using a property override on a script to change its speed.

  • Make a GermSlimeTarget carry an item by attaching an additional GameObject to its arm.

  • Give GermSlimeTarget a slug-like squelch by adding an AudioSource component that plays a squelching sound.

プレハブバリアントは、基本と呼ばれる別のプレハブのプロパティーを継承します。プレハブバリアントに行われたオーバーライドは、基本プレハブの値よりも優先されます。プレハブバリアントは、モデルプレハブやその他のプレハブバリアントなど、他のどんなプレハブでも基本に持つことができます。

プレハブバリアントの作成

別のプレハブに基づいてプレハブバリアントを作成する方法は複数あります。

Project ウィンドウのプレハブを 右クリック し、Create > Prefab Variant を選択します。これにより、選択したプレハブのバリアントを作成できます。このプレハブには最初はオーバーライドはありません。プレハブバリアントをプレハブモードで開いて、オーバーライドを加えることができます。

また、Hierarchy のプレハブインスタンスを Project ウィンドウに ドラッグ することもできます。これを行うと、新しいプレハブまたはプレハブバリアントを作成するかどうかを尋ねるダイアログが表示されます。プレハブバリアントを選択すると、ドラッグしたプレハブインスタンスに基づく新しいプレハブバリアントが作成されます。そのインスタンスでオーバーライドしたものはすべて、新しいプレハブバリアント内にあります。プレハブモードで開いて、オーバーライドを加えたり、オーバーライドの編集や削除を行うことができます。

プレハブバリアントは青のプレハブアイコンで表示され、矢印がついています。

A basic GermSlimeTarget Prefab, and a variant of that Prefab called GermSlimeTarget With GermOBlaster, as viewed in the Hierarchy window.
A basic GermSlimeTarget Prefab, and a variant of that Prefab called “GermSlimeTarget With GermOBlaster”, as viewed in the Hierarchy window.

プレハブバリアントの編集

プレハブバリアントがプレハブモードで開かれると、ルートはプレハブインスタンスとして青のプレハブアイコンで表示されます。このプレハブインスタンスは、プレハブバリアントが継承する基本プレハブを表します。プレハブバリアント自体を表すものではありません。プレハブバリアントに加える編集はすべて、バリアントに存在するこの基本プレハブに対するオーバーライドになります。

The Prefab Variant GermSlimeTarget With GermOBlaster in Prefab Mode. The GermOBlaster Prefab is added as an override to the base Prefab
The Prefab Variant “GermSlimeTarget With GermOBlaster” in Prefab Mode. The “GermOBlaster” Prefab is added as an override to the base Prefab

In the screenshot above, if you were to select the GermSlimeTarget With GermOBlaster root GameObject and click the Select button in the Inspector, it will select the base Prefab GermSlimeTarget and not the Variant GermSlimeTarget With GermOBlaster because the Prefab instance is an instance of the base Prefab GermSlimeTarget and the Select button always selects the Prefab Asset that an instance comes from.

プレハブインスタンスの場合と同様に、プレハブバリアントのプレハブオーバーライド (プロパティー値の変更、コンポーネントの追加、コンポーネントの削除、子ゲームオブジェクトの追加など) を行なえます。同様の制限もあります。基本プレハブから作成されたプレハブバリアントのゲームオブジェクトを繰り返し、親にすることはできません。また、基本プレハブにあるプレハブバリアントからゲームオブジェクトを削除することもできません。ただし、ゲームオブジェクトを (プロパティーのオーバーライドとして) 非アクティブにして、ゲームオブジェクトの削除と同じ効果を得ることができます。

Note: When editing a Prefab Variant in Prefab Mode, you should understand that applying these overrides (via the Overrides drop-down window or context menus) will cause your variant’s variations to be applied to the base Prefab Asset. This is often not what you want. The point of a Prefab Variant is to provide a convenient way to store a meaningful and reusable collection of overrides, which is why they should normally remain as overrides and not get applied to the base Prefab Asset. To illustrate this point, if you were to apply the additional GermOBlaster GameObject to the base Prefab Asset (the “GermSlimeTarget”), then the Prefab Asset would also have the GermOBlaster. The whole point of the GermSlimeTarget With GermOBlaster variant is that only this variation carries an GermOBlaster, so the added GermOBlaster GameObject should be left as an override inside the Prefab Variant.

Overrides ドロップダウンウィンドウを開くと、そのヘッダーに、オーバーライドの対象となるオブジェクトと、オーバーライドが存在するコンテキストが常に表示されます。プレハブバリアントの場合、ヘッダーは、オーバーライドは基本プレハブを対象とし、プレハブバリアントに存在することが表示されます。さらに明確にするために、Apply All ボタンには Apply All to Base (基本にすべてを適用) と表示されています。

プレハブモードでプレハブバリアントを編集するときの、プレハブバリアントの Overrides ドロップダウン
プレハブモードでプレハブバリアントを編集するときの、プレハブバリアントの Overrides ドロップダウン

  • 2018–07–31 Page published

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

ネスト状のプレハブ
複数レベルでのオーバーライド