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