インスタンスのオーバーライド を使用すると、プレハブのインスタンス間でバリエーションを作成し、それらのインスタンスを同じプレハブアセットにリンクすることができます。
プレハブアセットを変更すると、その変更はすべてのインスタンスに反映されます。ただし、個々のインスタンスに直接変更を加えることもできます。直接変更を行うと、特定のインスタンスで インスタンスのオーバーライド が作成されます。
例えば、プレハブアセットの “ロボット” がゲームの複数のレベルに配置されている場合です。“ロボット” の各インスタンスは異なる速度を持ち、異なるオーディオクリップが割り当てられます。
インスタンスのオーバーライド には、以下の 4 種類があります。
プロパティの値をオーバーライドする
コンポーネントを加える
コンポーネントを削除する
子ゲームオブジェクトを加える
プレハブインスタンスにはいくつかの制限があります。プレハブに含まれるゲームオブジェクトを再コピーすることはできず、プレハブに含まれるゲームオブジェクトを削除することはできません。ただし、ゲームオブジェクトを非アクティブ化することはできます。これは、ゲームオブジェクトの削除に代わる適切な方法です (プロパティのオーバーライドの 1 つと考えられます)。
Inspector ウィンドウでは、インスタンスのオーバーライドは 太字 の名前ラベルで表示され、左側に青い線が表示されます。新しいコンポーネントをプレハブインスタンスに追加すると、青い線がコンポーネント全体に伸びます。
また、インスペクターでは、加えられたコンポーネントと削除されたコンポーネントのアイコンにプラスとマイナスのバッジが表示され、追加されたゲームオブジェクトには Hierarchy のアイコンにプラスバッジが表示されます。
プレハブインスタンスのオーバーライドされたプロパティ値は、常にプレハブアセットの値よりも優先されます。つまり、プレハブアセットのプロパティを変更しても、そのプロパティがオーバーライドされているインスタンスには影響しません。
プレハブアセットを変更したときに、すべてのインスタンスが期待通りに更新されない場合は、そのプロパティがインスタンス上でオーバーライドされているかどうかを確認する必要があります。インスタンスのオーバーライドは、どうしても必要な場合にのみ使用することをお勧めします。なぜなら、プロジェクト全体を通してインスタンスのオーバーライドが非常に多い場合、プレハブアセットの変更が、すべてのインスタンスに反映されるかどうかを判断することが難しいからです。
プレハブインスタンスの 整列 (alignment) は特殊なケースで、他のプロパティとは異なる方法で処理されます。 整列 に関する値は、プレハブアセットからプレハブインスタンスに渡されることはありません。つまり、明示的なインスタンスのオーバーライドを行わなくても、プレハブアセットの整列とは常に異なります。具体的には、整列とはプレハブインスタンスのルート Transform の Position と Rotation プロパティを意味し、Rect Transform の場合は Width、Height、Margins、Anchors、Pivot プロパティも含みます。
これは複数のプレハブインスタンスが同じ位置と回転をとることを必要とすることは非常にまれであるからです。一般的には、プレハブインスタンスの位置と回転を変える必要があるため、Unity は上記の処理をプレハブのオーバーライドとして扱いません。
2018–07–31 限られた 編集レビュー でパブリッシュされたページ
ネスト化したプレハブとプレハブのバリアントを 2018.3 に追加
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.