Prefabs sind stabile Objekte, die eine Hierarchie aus Entitäten und Komponenten nutzen, um die Basisinformationen aufzunehmen, die alle Prefab-Instanzen gemeinsam haben.
So ist es einfacher, Prefabs als Ganzes oder in Teilen zu bearbeiten, während du dein Level weiter aufbaust und konzipierst. Du kannst in Scene Graph erstellte Asses instanziieren und außer Kraft setzen, um neue Spielobjekte und Prefabs zu erstellen.
Prefabs agieren wie ein Stempel für Spielobjekte, sodass du das Prefab so oft wie du möchtest in der Szene platzieren kannst. Alle Instanzen, die du erstellst, sind entweder als Gruppe oder einzeln bearbeitbar.
Weitere Informationen zur Macht und dem Potenzial von Prefabs findest du in der folgenden Dokumentation:
Speichern von Entitäten als Prefabs
Prefabs sollten so dicht wie möglich konstruiert sein, dein Prefab-Design sollte nicht übermäßig kompliziert sein. Prefabs mit zahlreichen Entitäten und Komponenten werden datenintensiv und können Probleme für dein Projekt verursachen.
Es kann jeweils nur ein Komponententyp für eine Entität verwendet werden. Das bedeutet, dass du einen Komponententyp nicht in derselben Entität wiederverwenden kannst, sobald du einen Komponententyp ausgewählt hast. Um dieselbe Komponente zu verwenden, musst du eine weitere Entität hinzufügen und dann dieselbe Komponente zu der neuen Entität hinzufügen.
So erstellst du ein Prefab:
Klicke im Outliner mit der rechten Maustaste auf die Parent-Entität und wähle dann Als Prefab speichern…. Das Fenster Neues Prefab erstellen wird angezeigt.
Zum Vergrößern auf das Bild klicken.
Du kannst die Entitäten zuerst im Outliner verschachteln oder im Prefab-Editor neue Entitäten zu einem Prefab hinzufügen.
Benenne das Prefab und wähle Entitätenklasse erstellen. Der Prefab-Editor wird mit dem erstellten Prefab im Viewport geöffnet. Die Miniaturansicht des Prefab wird im Inhaltsbrowser angezeigt.
Prefabs können im Outliner verschachtelt und zusammengruppiert werden, um eine einfachere Bearbeitung zu ermöglichen.
Wähle die Prefab-Miniaturansicht aus und ziehe das Prefab aus dem Inhaltsbrowser in den Viewport. Dadurch wird eine weitere Instanz des Prefab erstellt.
Propagieren von Änderungen auf alle Prefab-Instanzen
Eine Prefab-Instanz ist mehr als die visuelle Kopie einer Vorlage. Änderungen die du mit dem Prefab Editor vornimmst, führen dazu, dass alle Instanzen automatisch alle gespeicherten Änderungen übernehmen.
Die Verwendung von Hierarchien in Scene Graph ist praktisch, um zu bestimmen, wie Child-Prefabs und -Entitäten mit dem Parent interagieren. Vor allem dann, wenn du mit Assets arbeitest, deren Drehpunkte nicht im Zentrum liegen, oder wenn du keine
Das spart dir Zeit, da du nicht jede Prefab-Instanz suchen und die gleichen Änderungen immer und immer wieder neu erstellen musst.
Du kannst auch verschieden Prefabs in einer Hierarchie zusammengruppieren, um komplexere Prefabs zu erstellen.
Außerkraftsetzen von Prefab-Instanzen
Du kannst Komponenten in einer Prefab-Instanz außer Kraft setzen, um Änderungen zu erstellen, die für diese einzelne Instanz einmalig sind. Wenn du eine Komponente außer Kraft setzt, wird auf der Entität im Outliner, auf der Komponentenkarte und neben der außer Kraft gesetzten Komponente im Details-Panel ein Override-Symbol angezeigt.
Overrides ersetzen das Design des Parent-Prefab auf der Ebene der betroffenen Komponente durch die außer Kraft gesetzten Eigenschaftsänderungen der Komponente. Du kannst Komponenten auf zwei Arten überschreiben:
Bearbeite ein Prefab im Prefab-Editor.
Überschreibe eine Entität oder Komponente über die Komponentenkarte.
Füge im Prefab-Editor eine neue Komponente hinzu oder erstelle eine Verse-Komponente, um dem Prefab Funktionalitäten wie Bewegung oder Unbeweglichkeit hinzuzufügen. Das Speichern dieser Änderungen im Prefab-Editor stellt sicher, dass die Änderung in jeder Instanz des Prefab in der Szene wirksam wird.
Das Überschreiben einer Entität erfolgt durch Hinzufügen einer neuen Komponente oder durch Erstellen einer Verse-Komponente, um Funktionalität wie Bewegung oder Unbeweglichkeit hinzuzufügen.
Das Überschreiben einer Entität oder Komponente aus der Komponentenkarte in einer vorgefertigten Instanz wendet die einzigartigen Änderungen auf diese einzelne Instanz an. In der Abbildung unten basieren die beiden Holzhäuser auf demselben ursprünglichen Prefab-Design, aber beim zweiten Haus wurden die Komponentenkarten an wichtigen Komponenten überschrieben, um verschiedene Meshs hinzuzufügen oder Teile des Fertighauses in eine andere Richtung zu drehen, um eine neue Seite des Hauses zu zeigen.
So setzt du eine Komponente außer Kraft:
Ziehe eine Instanz des Prefab aus dem Inhaltsbrowser in den Viewport.
Wähle im Outliner die Entität der Prefab-Instanz aus.
Klicke im Details-Panel auf die Schaltfläche des Komponentenkarte-Dropdown-Menüs und wähle die Option Komponente außer Kraft setzen.
Wähle eine neue Eigenschaft für die Komponente aus. Der Override dieser Komponente für diese Instanz unterscheidet sich nun vom Parent-Prefab und bleibt so, auch wenn du Änderungen am Parent-Prefab vornimmst.
Überschreibungssymbole
Überschreibungssymbole sind blaue Kreise mit einem blauen Pfeil in der Mitte des Kreises. Das Symbol zeigt an, dass eine Komponente in dieser Entität überschrieben wurde. Wenn die Entitäten außer Kraft gesetzt werden, kannst du sie in einer Szene mehrfach verwenden. Die Entitäten funktionieren dann auch im Prefab weiterhin einheitlich.
Neue Einheiten, die einem Prefab hinzugefügt werden, haben grüne Kreise mit einem Pluszeichen in der Mitte, um zu zeigen, dass sie nach der Erstellung der Prefab hinzugefügt wurden.
Prefab-Hierarchien
Prefab-Hierarchien werden durch die Verschachtelung von Entitäten und Prefabs unter einem Parent-Prefab oder einer Entität erstellt. Durch das Überordnen von Elemente hast du folgende Möglichkeiten:
Pass den Maßstab der Komponentenfunktionen eines Prefab an, um festzulegen, wie das Prefab in der Szene funktionieren soll.
Bestimme, wie Child-Entitäten mit dem Parent-Prefab interagieren.
Hierarchien ermöglichen das Andocken von Assets an einem bestimmten Vektor in der Szene durch die Platzierung von Drehpunkten. Dies ist nicht nur für die Gestaltung von Kulissen hilfreich, sondern auch für Gameplay-Elemente, die Koordinaten verwenden.
Drehpunktplatzierung und Raster andocken
Pivot points und grid snapping arbeiten mit der transform_component einer Entität, um Spielobjekte und Prefabs in der Szene auszurichten.
Der Prefab-Editor verwendet zur Skalierung der Prefabs nicht das Raster. Stattdessen verwendet er das Kontextmenü des Outliner, um den Versatz des Drehpunktes eines Prefab zu bestimmen.
Die Rastereinrastung ist relativ zur Größe deiner Assets. Um sicherzustellen, dass sich die Assets wie vorgesehen verhalten, sollten sie auf 512 Unreal-Units skaliert werden und dasselbe Rastermaß in UEFN verwenden. Wenn du deine Assets nicht neu skalierst, dann setze die Drehpunkte deiner Assets zurück und skaliere die Rastereinrastungs-Einstellungen neu.
Das Platzieren des Drehpunkts in der Mitte des Prefab funktioniert nicht bei allen Assettypen, wie z. B. bei Treppen. Stattdessen kannst du die Option Transformation bearbeiten im Modellierungsmodus verwenden, um den Drehpunkt zu verschieben, um sicherzustellen, dass deine Assets in der Welt an der gewünschten Stelle erscheinen und ausgerichtet sind.
Erfahre mehr über den 3D-Welt-Bereich in dem Dokument Left-Up-Forward-Koordinatensystem.
Aufbau in Scene Graph
Der Aufbau in Scene Graph bietet eine Methode zur Ausrichtung von Assets. Alle Child-Entitäten und Prefabs drehen sich um einen Versatz relativ zum Parent-Objekt. Wenn du eine Prefab-Struktur um 360 Grad drehst, bewegt sich das Objekt rund um sein Zentrum auf dem Raster.
Wenn du einen Actor in UEFN drehst, wird die Drehung durch die Platzierung des Actor in der Welt bestimmt. Dadurch wird es schwieriger, die einzelnen Actors zu einer vollständigen Struktur auszurichten.
Die Verwendung von Hierarchien in Scene Graph ist praktisch, um zu bestimmen, wie Child-Prefabs und -Entitäten mit dem Parent interagieren. Vor allem, wenn du mit Assets arbeitest, deren Drehpunkte nicht im Zentrum liegen oder Unreal Units verwenden, um sich an Objekten in der Welt auszurichten.
Es ist auch hilfreich, wenn du dekorative Assets im Verhältnis zu Parent-Prefabs platzierst, auf denen sie in der Szene platziert sind.
Weitere Informationen über die Verwendung der Transform-Komponente findest du im Dokument Transform-Komponente (RYANS DOC LINK HIER).
Prefab-Klasse in Verse
Prefabs, die du in deinem Projekt erstellst, werden in der Datei Assets.digest.verse deines Projekts als Klasse für Verse angezeigt. Du kannst Instanzen deiner Prefabs spawnen, indem du die Prefab-Klasse instanziierst und sie mit Verse zu einer Entität in der Szene hinzufügst.
Weitere Informationen zur Arbeit mit Prefabs findest du unter Creating Your Own Component in Verse.