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 で追加
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.