レベルのインスタンス化は、レベル編集の操作性を向上、合理化するために設計されているレベルベースのワークフローです。レベルのインスタンス化ワークフローでは、1 つ以上のアクタを使用してレベル インスタンスを作成し、ワールド全体に繰り返し配置することができます。
このワークフローには、次のメリットがあります。
-
レベル インスタンスがインコンテキストで編集されるため、変更がワールドにどのように影響するかをすぐに確認できる。1 つのインスタンスに加えられた変更は、保存時にすべてのインスタンスに反映されます。
-
注視点、建物、ゲームプレイ セットアップなど、ワールドでよく使用される一連のスタティックメッシュを「スタンプ」ですばやくコピーできる。
-
Epic Games が制作した City サンプル デモおよび 古代の谷 デモの制作に使用されたプロダクション対応のプロセス。
City サンプルの空を背景としたビル群
World Partition を使用しないで、レベル ストリーミング を使用できますが、レベル インスタンスは、World Partition のメイン ワールドの外部にストリーミング管理またはストリーミング戦略を自動的に設定しません。
レベル インスタンスを作成する
レベル インスタンスには次の 2 つのタイプがあります。
- レベル インスタンス:複数のアクタを組み合わせてサブレベルを作成するアクタのコレクション。サブレベルの複数のインスタンスをプロジェクト全体で繰り返すことができますが、以前のバージョンの Unreal Engine では実行できませんでした。このタイプは、注視点やスタンドアローン ゲームプレイのセットアップに使用します。
- Packed Level ブループリント:レンダリング用に最適化された単一の ブループリント アクタ を作成するために組み合わされた スタティックメッシュ アセットです。スタティックメッシュは、Packed Level アクタ にリンクされている Packed Level ブループリント のインスタンスに置き換えられます。このタイプは固定的な建物や、古代の谷で使用されているメガ アセンブリのような緻密なビジュアル セット アップに推奨されます。
レベル インスタンスを作成する
新規レベル インスタンスは、選択したアクタから生成され、[Viewport (ビューポート)] または [Outliner (アウトライナー)] で作成できます。
複数のアクタを選択した後に、その 1 つで右クリックすると、コンテキストに応じたメニューが表示されます。メニューで、[Level (レベル)] オプションに移動し、[Create Level Instance (レベル インスタンスの作成)] を選択します。
コンテキスト メニューでレベル インスタンスを作成する
次の設定項目を含むダイアログ ボックスが表示されます。
[New Level Instance (新規レベル インスタンス)] ダイアログ ボックス
設定項目 | 説明 |
---|---|
External Actors (外部アクタ) | One File Per Actor (1 アクタあたり 1 ファイル) システムを使用するように外部アクタを有効にします。詳細については、「One File Per Actor」のドキュメントを参照してください。 |
Pivot Type (ピボット タイプ) | レベル インスタンスの ピボット には次のタイプがあります。
|
Pivot Actor (Pivot アクタ) | アクタをピボットとして選択した場合、このドロップダウンで、レベル インスタンスのピボット ポイントになるアクタを選択します。 |
設定を選択して [OK] をクリックすると、新規レベル インスタンスを保存するかどうかを確認する画面が表示されます。
この手順により、レベルに新しい Level Instance アクタが作成され、前に選択したアクタと置き換わります。このアクタは作成されたばかりのレベルを表し、このアクタに適用されるすべてのトランスフォームが、レベル インスタンスに適用されます。
レベルのアセットが新しい Level Instance アクタに置き換わります。
レベル インスタンスを構成するアクタはアウトライナーに引き続き表示されていますが、Level Instance アクタの子アクタになり、選択できなくなりました。
アセットが Level Instance アクタの子アクタになりました。
Packed Level ブループリントを作成する
レベル インスタンスと同様に、Packed Level ブループリントは、選択したアクタを使用して生成され、[Viewport] または [Outliner] を右クリックすると作成できます。
複数のアクタを選択した後に、その 1 つで右クリックすると、コンテキストに応じたメニューが表示されます。メニューで、[Level] オプションに移動し、[Create Packed Level Actor (Packed Level アクタの作成)] を選択します。
コンテキスト メニューで Packed Level ブループリントを作成する
上記と同じダイアログ ボックスが表示されます。設定を選択して、[OK] をクリックします。次に、新しいレベルと新しい Packed Level ブループリントを保存するように求められます。
この手順により、Packed Level ブループリントに関連付けられたレベルで Packed Level アクタ が作成されます。
レベル インスタンスを編集する
レベル インスタンスと Packed Level ブループリントは作成されると、ワールド全体にコピーして配置することができます。
レベル インスタンスを編集する
レベル インスタンスを編集するには、ビューポートでレベル インスタンスを 1 つ選択し、右クリックでメニューを開き、[Level] オプションに移動し、[Edit (編集)] を選択します。[Details (詳細)] パネルの [Edit] ボタンをクリックすることもできます。
これにより、ワールド内の他のすべてのアクタがグレー表示され、インコンテキストでより簡単にレベル インスタンスを編集することができます。
レベル インスタンスをビューポートで編集しているときは、その他すべてのアクタはグレー表示されます。
編集が完了したら、[Outliner] で Level Instance アクタを選択し、[Details] パネルで [Commit Changes (変更をコミット)] をクリックします。
[Details] パネルで [Commit Changes] をクリックすると、レベル インスタンスの変更が保存されます。
変更をコミットすることなく編集を終了するには、Esc キーを 2 回押します。
レベル インスタンスに行われた変更は、ワールド内のすべてのレベル インスタンスのコピーに反映されます。
Packed Level ブループリントを編集する
Packed Level ブループリントを編集するには、[Outliner] でそのインスタンスを特定し、[Edit] をクリックします。コンテンツ ブラウザ でブループリントを特定して、ダブルクリックすることもできます。この操作により、ブループリント エディタ ウィンドウが開きます。
選択した Packed Level ブループリントを表示するブループリント エディタ ウィンドウ
レベル インスタンスとは異なり、Packed Level ブループリントに行われた変更は、ワールド内の他のすべてのコピーには反映されず、変更が行われた後に配置されるコピーのみに影響します。
レベル インスタンスを分割する
レベル インスタンスを分割すると、Level Instance アクタまたは Packed Level アクタがワールドから削除され、そのアクタを作成するために使用された元のアセットに置き換えられます。レベル インスタンスの分割により、コンテンツ ブラウザからレベル インスタンスまたは Packed Level ブループリントが削除されるわけではありません。
ただし、この操作を元に戻すことはできません。
ランタイム時のレベル インスタンス
データ レイヤー
レベル インスタンスおよび Packed Level ブループリントは World Partition:データ レイヤー をサポートしています。
レベル インスタンスに含まれるアクタは、デフォルトで、Level Instance アクタに割り当てられているデータ レイヤーを継承します。レベル インスタンスに含まれているアクタは、その他のデータ レイヤーもサポートしています。
たとえば、家屋の注視点を作成するアセットを含むレベル インスタンスを Neighborhood データ レイヤーに割り当てることができます。また、休日をテーマにしたアイテムが含まれているレベル インスタンスでは、それらの休日のアイテムが Holiday データ レイヤーが有効な場合にのみ表示されるように、そのレベル インスタンスを別の Holiday データ レイヤーに割り当てることができます。
レベル ストリーミング モード
レベル インスタンスと Packed Level アクタは、World Partition 設定を使用して、ストリーミング動作 (埋め込みモードまたはレベル ストリーミング モード) を定義します。
これらの設定は編集可能ではなく、参考までに説明を記載しています。
埋め込みモード
埋め込みモード を使用すると、One File Per Actor (OFPA) システムを使用するレベル インスタンスは、破棄され、そこにある各アクタは、World Partition グリッドにランタイム時に追加されます。これはデフォルトのランタイム モードであり、レベル コンテンツのストリーミングに推奨される方式です。また、これによりレベル インスタンスはエディタ内にのみ存在するようになります。
OFPA を使用しない一部のアクタは、埋め込みモードを使用する際に、ランタイム時に失われます。たとえば、埋め込みレベル インスタンスの AWorldSettings オブジェクトはランタイム時には存在しません。これは非 OFPA アクタだからです。こういったアクタへの依存を回避し、必要なときにレベル ストリーミング モードを使用することは、デベロッパーの責任です。
レベル ストリーミング モード
OFPA を使用しないレベル インスタンスは、World Partition グリッドに埋め込むことはできないため、ランタイム時には標準のレベル ストリーミングが代わりに使用されます。つまり、Level Instance アクタが、所有する World Partition ランタイム セルを使用してロードされるときに、関連付けられているレベルをロードします。
レベル ストリーミングのこの方式では、ストリーミングするレベルが増えるため、ランタイム時の負荷が増大します。パフォーマンスに影響するため、このストリーミング モードを、高密度のレベルで使用することは推奨しません。
埋め込みモードと World Partition:データ レイヤー を併用するのは、動的にロードされるレベルで、以前に実行できた内容を再現するうえで有効な手段方法です。