Unity の Prefab (プレハブ) システムでは、プレハブアセット がテンプレートの役割を持ちます。プレハブアセットをエディターで作成し、アセットとして Project ウィンドウに保存します。プレハブアセット から任意の数の プレハブインスタンス を作成できます。プレハブインスタンスは、エディターで作成し、シーンの一部として保存するか、またはランタイムにインスタンス化することができます。
プレハブアセットを作成するには、ゲームオブジェクトを Hierarchy ウィンドウから Project ウィンドウにドラッグします。ゲームオブジェクト、そのすべてのコンポーネント、子ゲームオブジェクトは、Project ウィンドウの新しいアセットになります。Project ウィンドウ内のプレハブアセットは、Project ウィンドウの設定によって、ゲームオブジェクトのサムネイル、または 青いキューブ形のプレハブアイコンで表示されます。
プレハブアセットを作成するこのプロセスは、元のゲームオブジェクトをプレハブインスタンスに変えることもします。これは、新しく作成されたプレハブアセットのインスタンスの 1 つになりました。プレハブインスタンスは Hierarchy に青いテキストで表示され、プレハブのルートゲームオブジェクトは赤、緑、青のゲームオブジェクトのアイコンの代わりに青いキューブプレハブのアイコンで表示されます。
複数のプレハブアセットを一度に作成するには、Hierarchy ウィンドウから複数のゲームオブジェクトを Project ウィンドウにドラッグします。この機能は上のパラグラフに記載されているものと同じです。
まだプレハブでない複数のゲームオブジェクトを Project ウィンドウにドラッグした場合、Unity は追加の手順を必要とせず、それぞれのゲームオブジェクトに対して新しいオリジナルのプレハブアセットを作成します。
Project ウィンドウにドラッグしたゲームオブジェクトの中に、既存のプレハブバリアントまたはモデルバリアントがある場合、ゲームオブジェクトから新しいプレハブアセットまたは新しいバリアントを作成するかどうかを確認するダイアログボックスが表示されます。このダイアログボックスの内容は、Project ウィンドウにドラッグしたゲームオブジェクトの数と種類によって変化します。
エディターでプレハブアセットのインスタンスを作成するには、プレハブアセットを Project ビューから Hierarchy ビュー、またはシーンビューにドラッグします。
スクリプトを使用して、ランタイムにプレハブのインスタンスを作成することもできます。詳細は、プレハブのインスタンス化 を参照してください。
Hierarchy ウィンドウから新しいゲームオブジェクトをドラッグして、Project ウィンドウの既存の Prefab アセットの上にドロップすることで、プレハブを置き換えることができます。
既存のプレハブを置き換える場合、Unity はプレハブ自体への参照や、子のゲームオブジェクトやコンポーネントなどのプレハブの個々のパーツへの参照を維持しようとします。これを実現するために、新しいプレハブと置き換えようとしている既存のプレハブの間で、ゲームオブジェクトの名前を比べて一致させます。
ノート: このマッチングは名前のみで行われるため、プレハブの階層に同名のゲームオブジェクトが複数存在する場合、どのゲームオブジェクトがマッチングされるかは予測できません。そのため、既存のプレハブを上書き保存する際に、参照を確実に維持する必要がある場合は、プレハブ内のすべてのゲームオブジェクトが一意の名前を持つようにする必要があります。
また、既存のプレハブ上で保存する際に、既存のコンポーネントへの参照を維持する場合、プレハブ内の 1 つのゲームオブジェクトに同じタイプのコンポーネントが複数接続されていると、同様の問題が発生する可能性があります。この場合、どのコンポーネントが既存の参照と一致するかを予測することはできません。
2018–07–31 公開ページ
ネスト化したプレハブとプレハブのバリアントを 2018.3 で追加