Unity の Prefab (プレハブ) システムでは、1 つのゲームオブジェクトをそのすべてのコンポーネント、プロパティー値、子ゲームオブジェクトとまとめて、再利用可能なアセットとして作成、設定、保存することができます。プレハブアセットはテンプレートとして機能し、シーン内で新しいプレハブインスタンスを作成できます。
ノンプレイヤーキャラクター (NPC)、小道具、景色などのように、特定の方法で設定されたゲームオブジェクトをシーン内の複数の場所、またはプロジェクト内の複数のシーンに再利用したい場合は、そのオブジェクトをプレハブに変換すべきです。プレハブでは、すべてのコピーを自動的に同期した状態にすることができるため、単にゲームオブジェクトをコピーアンドペーストするよりも良い方法といえます。
プレハブアセットに加えた編集は、自動的にそのプレハブのインスタンスに反映されるため、アセットのすべてのコピーに対して同じ編集を繰り返すことなく、プロジェクト全体にわたる変更を簡単に行なうことができます。
他のプレハブの中に プレハブをネスト にすることで、複数のレベルで簡単に編集できる複雑な階層を成すオブジェクトを作成できます。
ただし、すべてのプレハブインスタンスが同一である必要はありません。他のプレハブインスタンスと異なるものにしたい場合には、個々のプレハブインスタンスの設定を オーバーライド できます。また、プレハブの バリアント を作成して、一揃いのオーバーライドをまとめて、意味のあるバリエーションのプレハブにグループ化することもできます。
また、例えば、ゲーム中に適切なタイミングでパワーアップ、特殊効果、発射体、NPC を表示するなど、開始時にシーンに存在しなかった ゲームオブジェクトをランタイムにインスタンス化 したい場合も、プレハブを使うべきです。
プレハブを使用する一般的な例は以下のとおりです。
環境アセット - 例えば、レベルの周りに複数回使用される特定のタイプの樹木 (上のスクリーンショット参照)
NPC - 例えば、特定の種類のロボットが、ゲーム内で複数のレベルに複数回表示される場合があります。それらは、(オーバーライド することによって) 移動するスピードや発する音が異なる場合があります。
発射体 - 例えば、海賊の大砲が発射されるたびに大砲の弾のプレハブがインスタンス化されます。
プレイヤーのメインキャラクター - プレイヤーのプレハブは、ゲームの各レベル (別々のシーン) の開始点に配置されます。