Die Level-Instanzierung ist ein Level-basierter Arbeitsablauf, der die Portierung von Nicht-World Partition-Welten in das World Partition-System erleichtert. Sie kann mithilfe der folgenden Funktionen zum Erstellen von komplexen Streaming-Strategien verwendet werden:
-
Level-Instanzierung mit Transformationen unter Verwendung eines speziell entworfenen Actors.
-
Streaming von mehreren Instanzen des gleichen Levels zur Laufzeit. Die war in vorherigen Versionen von Unreal Engine nicht möglich.
-
Hierarchische Verschachtelung von zusätzlichen Unterlevels innerhalb eines Unterlevels.
Beispielsweise kannst du World Partition verwenden, um eine Map mit einer großen Anzahl von Actors zu füllen. In Fällen, bei denen Actors auf bestimmte Weise angeordnet und wiederverwendet werden müssen, stellen Level-Instanzen einen kontextbezogenen Arbeitsablauf zur Bearbeitung bereit, der die alte Level-Ansicht ersetzt.
Obwohl es möglich ist, das Level-Streaming ohne die Verwendung der World Partition zu verwenden, besitzen Level-Instanzen außerhalb der Hauptwelt einer World Partition nicht automatisch ein Streaming-Management oder Streaming-Strategien.
Erstellen von Level-Instanzen
Neue Level-Instanzen werden von ausgewählten Actors generiert und können entweder im Viewport oder im Welt-Outliner erstellt werden.
Nach dem Auswählen der Actors klickst du mit der rechten Maustaste auf einen von ihnen, um das Kontextmenü aufzurufen, und wählst dann Aus Auswahl erstellen aus.
Es wird ein Dialogfeld mit den folgenden Einstellungen angezeigt:
| Einstellung | Beschreibung |
|---|---|
| Typ | Der Typ der Level-Instanz:
|
| Externe Actors | Aktiviert externe Actors, um das System „Eine Datei pro Actor" zu verwenden. Weitere Informationen findest du in der Dokumentation One File Per Actor. |
| Pivottyp | Der Typ des Pivots, den die Level-Instanz haben wird:
|
| Pivot-Actor | Wenn Actor als Pivot ausgewählt ist, verwendest du diese Dropdown-Liste, um auszuwählen, welcher Actor der Drehpunkt für die Level-Instanz sein wird. |
Nachdem du deine Einstellungen ausgewählt hast, wirst du aufgefordert, die neue Level-Instanz zu speichern.
Dieser Prozess erstellt im Level einen neuen Actor vom Typ ALevelInstance, wodurch die zuvor ausgewählten Actors ersetzt werden. Dieser Actor repräsentiert den Level, der gerade erstellt wurde und alle auf diesen Actor angewendete Transformationen werden auf die Level-Instanz angewendet.
Im Welt-Outliner sind die Actors ausgegraut, da sie im Moment nicht ausgewählt oder bearbeitet werden können.
Es ist möglich, einen Actor vom Typ ALevelInstance in deinen Level zu ziehen und ihm im Detail-Panel eine .umap-Datei zuzuweisen.
Es ist möglich, Level-Instanzvorlagen über .ini-Dateien von Unreal Engine bereitzustellen, indem Einträge ähnlich den regulären Level-Erstellungsvorlagen verwendet werden. Dazu fügst du Folgendes der Datei DefaultEditor.ini für dein Projekt hinzu:
[/Script/LevelInstanceEditor.LevelInstanceEditorSettings]
+TemplateMapInfos=(ThumbnailTexture=Null,Map="/Game/Maps/Tools/TM-Template")
Paketierte Level-Instanzen
Eine paketierte Level-Instanz ist ein Typ der Level-Instanz, der versucht, die statischen Meshes eines Levels in so wenige statische Mesh-Instanzen wie möglich zu gruppieren.
Es sind zwei Arten von paketierten Level-Instanzen verfügbar:
-
Paketierte Level-Instanzen: Der Paketierungsprozess erstellt eine paketierte Level-Instanz, die auf dem Standort des ALevelInstance-Actors zentriert ist.
-
Blueprint der paketierten Level-Instanz: Der Paketierungsprozess erstellt eine Level-Instanz, auf die von einem Blueprint aus verwiesen werden kann.
Actors und Komponenten, die keine statischen Meshes sind, sind im Paketierungsprozess nicht enthalten und verbleiben getrennt im Quell-Level.
Wenn mit dem Level gearbeitet wird, ändert das Paketieren einer Level-Instanz den Arbeitsablauf der Bearbeitung nicht.
Paketierte Level-Instanzen sind derzeit eine experimentelle Funktion und kann in späteren Versionen von Unreal Engine geändert oder entfernt werden.
Bearbeiten von Level-Instanzen
Level-Instanzen können im Kontext des Viewports oder des Detail-Panels bearbeitet werden.
Wie oben gezeigt, wird der Bearbeitungsmodus durch folgende Schritte geöffnet:
-
Wähle die Level-Instanz im Viewport aus.
-
Klicke mit der rechten Maustaste, um das Kontextmenü zu öffnen.
-
Bewege im Abschnitt „Level-Instanz" den Mauszeiger über die Option „Bearbeiten" und wähle den Level aus, den du bearbeiten möchtest.
Der Bearbeitungsmodus kann auch aus dem Detail-Panel geöffnet werden:
Wähle die Level-Instanz aus, die du bearbeiten möchtest und klicke im Detail-Panel auf die Schaltfläche „Bearbeiten".
Level-Streaming zur Laufzeit
Eingebetteter Modus
Beim Verwenden des eingebetteten Modus werden Level-Instanzen, die das System Eine Datei pro Actor (OFPA) verwenden, verworfen und ihre Actors werden dem World Partition-Raster zur Laufzeit hinzugefügt. Das ist der Standard-Laufzeitmodus und die vorgeschlagene Methode für das Streaming von Level-Inhalten. Dies sorgt auch dafür, dass Level-Instanzen nur innerhalb des Editors existieren.
Einige Actors, die OFPA nicht verwenden, gehen bei der Verwendung des eingebetteten Modus zur Laufzeit verloren. Beispielsweise existiert das Objekt AWorldSettings einer eingebetteten Level-Instanz zur Laufzeit nicht, da es sich dabei um einen Nicht-OFPA-Actor handelt.
Es liegt in deiner Verantwortung, dich nicht darauf zu verlassen oder bei Bedarf den Level-Streaming-Modus zu verwenden.
Level-Streaming-Modus
Level-Instanzen, die OFPA nicht verwenden, können nicht im World Partition-Raster eingebettet werden und verwenden stattdessen zur Laufzeit das Standard-Level-Streaming. Das bedeutet, dass der ALevelInstance-Actor, wenn er durch seine eigene World Partition-Laufzeitzelle geladen wird, das zugehörige Level laden wird.
Diese Methode des Level-Streamings weist zusätzliche Laufzeitkosten auf, da es dem Stream weitere Levels hinzufügt. Es wird aufgrund der Auswirkungen auf die Performance nicht empfohlen, eine hohe Dichte von Levels zu verwenden, die diesen Streaming-Modus verwenden.
Der eingebettete Modus mit World Partition: Datenebenen ist eine gute Möglichkeit, dem nahezukommen, was zuvor mit dynamisch geladenen Levels erreicht werden konnte.
Datenebenen
Level-Instanzen unterstützen World Partition: Datenebenen, wenn „Eingebetteter Modus" oder „Level-Streaming-Modus" verwendet wird. Die in der Level-Instanz enthaltenen Actors erben die Datenebenen des Actors „ALevelInstance".