プレハブは、エンティティとコンポーネントの階層を使用して、すべてのプレハブ インスタンスが共有する基本情報を保持する安定したオブジェクトです。
これにより、レベルの構築と設計を続ける際に、プレハブ全体または一部を編集しやすくなります。 シーン グラフで作成されたアセットをインスタンス化およびオーバーライドして、新しいゲーム オブジェクトとプレハブを作成できます。
プレハブはゲーム オブジェクトのスタンプのように機能します。したがって、シーン内にはプレハブを何度でも配置できます。 作成したすべてのインスタンスは、グループとして、または個別に編集できます。
プレハブの利点とこれで可能なことの詳細については、次のドキュメントを参照してください。
エンティティをプレハブとして保存する
プレハブはできる限りしっかりと構築する必要があり、プレハブの設計は複雑になりすぎないようにします。 多数のエンティティやコンポーネントを含むプレハブはデータの処理が重くなり、プロジェクトに問題を引き起こす可能性があります。
エンティティで一度に使用できるコンポーネント型は 1 つだけです。 つまり、コンポーネント型を選択すると、同じエンティティでそのコンポーネント型を再利用することはできません。 同じコンポーネントを使用するには、別のエンティティを追加してから、そのコンポーネントを新しいエンティティに追加する必要があります。
プレハブを作成するには、以下を実行します。
[Outliner (アウトライナー)] で、親エンティティを右クリックし、[Save As Prefab... (プレハブとして保存)] を選択します。 [Create New Prefab (新しいプレハブの作成)] ウィンドウが開きます。
画像をクリックすると拡大表示されます。
最初にアウトライナーでエンティティをネストするか、後からプレハブ エディタでプレハブに新しいエンティティを追加することができます。
プレハブに名前を付けて、[Create entity Class (エンティティ クラスを作成)] を選択します。 プレハブ エディタが開き、ビューポート内に作成したプレハブが表示されます。 プレハブのサムネイルがコンテンツ ブラウザに表示されます。
アウトライナーでプレハブをネストしてグループ化すると、編集がしやすくなります。
プレハブのサムネイルを選択し、プレハブをコンテンツ ブラウザからビューポートにドラッグします。 これにより、プレハブの別のインスタンスが作成されます。
すべてのプレハブ インスタンスへの変更を反映する
プレハブ インスタンスは、オリジナルの単なる視覚的なコピー以上の機能を持ちます。 プレハブ エディタで変更を加えると、すべてのインスタンスに保存された変更がすべて自動的に適用されます。 Scene Graph で階層を使用すると、子プレハブと子エンティティが親と行うやり取りを決定しやすくなります。 特に、ピボット ポイントが中心からずれていることがあるアセットを使用している場合や、Unreal 単位を使用することなく、ワールド内のオブジェクトと整列させる場合に役立ちます。
これにより、すべてのプレハブ インスタンスを探して同じ変更を何度も再作成する必要がないため、時間を節約できます。
異なるプレハブを階層的にグループ化して、より複雑なプレハブを作成することもできます。
プレハブ インスタンスをオーバーライドする
プレハブ インスタンス内のコンポーネントをオーバーライドすると、そのインスタンスに固有の変更を加えることができます。 コンポーネントをオーバーライドすると、アウトライナー内のエンティティ、コンポーネント カード、および [Details] パネル内のオーバーライドされたコンポーネントの横に [Override (オーバーライド)] アイコンが表示されます。
オーバーライドは、影響のあるコンポーネントのレベル上で、コンポーネントのオーバーライドされたプロパティの変更により、親プレハブのデザインを置き換えます。 コンポーネントをオーバーライドするには、次の 2 つの方法があります。
プレハブ エディタでプレハブを編集する。
コンポーネント カードからのエンティティまたはコンポーネントをオーバーライドする。
プレハブ エディタから、新しいコンポーネントを追加するか、Verse コンポーネントを作成して、プレハブに移動やイントラクタビリティなどの機能を追加します。 これらの変更をプレハブ エディタに保存すると、シーン内のプレハブのすべてのインスタンスに変更が反映されます。
エンティティをオーバーライドするには、新しいコンポーネントを追加するか、移動やイントラクタビリティなどの機能を追加する Verse コンポーネントを作成します。
プレハブ インスタンス内のコンポーネント カードのエンティティまたはコンポーネントをオーバーライドすると、その単一のインスタンスに固有の変更が適用されます。 次の画像の 2 つの木造の家は同じオリジナルのプレハブ デザインに基づいていますが、2 つ目の家では、主要コンポーネントのコンポーネント カードにオーバーライドが行われ、異なるメッシュが追加されたり、プレハブの一部を異なる方向に向けたりすることで、家の新しい側面が示されます。
コンポーネントをオーバーライドするには、次の手順に従います。
コンテンツ ブラウザから、プレハブのインスタンスをビューポートにドラッグします。
アウトライナーで、プレハブ インスタンス上のエンティティを選択します。
[Details (詳細)] パネルで、コンポーネント カードのメニュー ボタンをクリックし、[Override Component (コンポーネントのオーバーライド)] を選択します。
コンポーネントの新しいプロパティを選択します。 このインスタンスの場合、このコンポーネントのオーバーライドは親プレハブとは異なることから、親プレハブに変更を加えても変化はありません。
オーバーライド アイコン
オーバーライド アイコンは、円の中心を指している青色の矢印が付いている青色の円です。 このアイコンは、そのエンティティ内のコンポーネントがオーバーライドされていることを示します。 エンティティがオーバーライドされると、それをシーンで何度も使用でき、そのエンティティはプレハブ内で整合性が維持されて引き続き機能します。
プレハブに追加された新しいエンティティには、中央にプラス記号が付いた緑色の円が表示され、プレハブが確立された後に追加されたことを示します。
プレハブ階層
エンティティおよびプレハブを 1 つの親プレハブまたは親エンティティの下でネスティングさせることで、プレハブ階層が作成されます。 親子付けすることで、次のことができるようになります。
プレハブのコンポーネント関数をスケーリングして、そのプレハブがシーン内でどのように機能するかを指定する。
子エンティティが親プレハブをどのようにやり取りするかを決定する。
階層により、ピボット ポイントの配置を通じて、シーン内の特定のベクターにアセットをスナップできるようになります。 これはセット ドレッシングだけでなく、座標を使用するゲームプレイ要素にも役立ちます。
ピボット ポイントの配置とグリッド スナップ
ピボット ポイントとグリッド スナップは、エンティティの transform_component と連動して、シーン内のゲーム オブジェクトおよびプレハブを整列させます。
プレハブ エディタは、プレハブのスケーリングにグリッドを使用しません。 その代わりに、アウトライナーの右クリック メニューを使用して、プレハブのピボット ポイントのオフセットを決定します。
グリッド スナップはアセットのサイズに基づいて行われます。 アセットを意図したとおりに動作させるには、512 Unreal 単位にスケーリングし、UEFN で設定されているのと同じグリッド測定を使用します。 アセットのスケールを設定し直さない場合は、アセットのピボット ポイントを設定し直し、グリッド スナップの設定をスケーリングし直します。
ピボット ポイントをプレハブの中央に配置しても、階段などの一部のアセット タイプでは機能しません。 代わりに、[Modeling (モデリング)] モードの [Edit Transform (トランスフォームを編集)] オプションを使用して、アセットがワールド内の意図した位置に表示および整列されるように、ピボット ポイントのオフセットを指定できます。
3D ワールド空間の詳細については、「LUF 座標系」を参照してください。
Scene Graph のコンポジション
Scene Graph のコンポジションによって、アセットを整列させる手段が提供されます。 すべての子エンティティとプレハブは、親オブジェクトを基準としたオフセットで回転します。 プレハブ構造を 360 度旋回させると、オブジェクトはグリッドでのその中心の周りで動きます。
UEFN でアクタを回転させる場合、その回転は、ワールド内でのアクタの配置によって決まります。 そのため、個々のアクタを整列させて完全な構造にすることがさらに難しくなります。
Scene Graph で階層を使用すると、子プレハブと子エンティティが親と行うやり取りを決定しやすくなります。 特に、ピボット ポイントが中心からずれていることがあるアセットを使用している場合や、Unreal 単位を使用することなく、ワールド内のオブジェクトと整列させる場合に役立ちます。
また、シーン内に配置されている親プレハブを基準として装飾アセットを配置する場合にも役立ちます。
Transform コンポーネントの使用方法の詳細については、「Transform コンポーネント (RYANS ドキュメントへのリンクをここに挿入)」ドキュメントを参照してください。
Verse のプレハブ クラス
プロジェクトで作成したプレハブは、プロジェクトの「Assets.digest.verse」ファイルの Verse クラスとして公開されます。 プレハブ クラスをインスタンス化し、Verse を使用してシーン内のエンティティに追加することで、プレハブのインスタンスをスポーンできます。
プレハブの操作の詳細については、「Verse を使用して独自のコンポーネントを作成する」を参照してください。