Vergleich von GameObjects mit UObjects und Actors
In Unity repräsentieren GameObjects programmierbare Objekte im Spiel. Ein GameObject tut an sich nicht viel. Es dient als Container für Komponenten, wie Licht und Mesh, die spezifische Funktionalitäten bereitstellen. Jedes GameObject verfügt über eine Transformations-Komponente, die die Position und Orientierung in der Welt darstellt.
In Unreal Engine (UE) repräsentieren UObjects programmierbare Objekte in der Welt Ihres Spiels. Die Klasse UObject fungiert als gemeinsame Basisklasse für die meisten Klassen in UE. Dieser Ansatz unterstützt das Reflexionssystem von Unreal Engine, welches automatische Garbage Collection und weitere Vorteile bietet.
Actor, eine Unterklasse von UObject, ist ein nahes Äquivalent zu Unitys GameObject. Actors unterstützen das Komponentensystem und Transformationen (USceneComponent) von UE, sodass Sie sie in der Welt platzieren können. Ein wesentlicher Unterschied zu Unity besteht jedoch darin, dass Sie die Funktionalität eines Actors direkt erweitern können, anstatt ausschließlich auf Komponenten angewiesen zu sein.
Wenn Ihre Objektimplementierung nicht die zusätzlichen Funktionen einer der Unterklassen von UObject erfordert, können Sie UObject direkt für eine leichtgewichtige Implementierung erweitern. Detailliertere Informationen zu UObjects finden Sie unter Objekte.
Vergleich von Komponentensystemen
Ähnlich wie Unity verfügt UE über ein Komponentensystem, mit dem Sie wiederverwendbare Funktionen an Ihre Spielobjekte anhängen können. Sie können Ihre eigenen Komponenten von Grund auf neu erstellen oder eine der vielen mit UE bereitgestellten Komponenten erweitern. Bevor Sie fortfahren, ist es wichtig, die folgenden grundlegenden Komponententypen zu verstehen:
Actor-Komponente – Der grundlegende Komponententyp, der an einen Actor angekoppelt wird. Actor-Komponenten haben keine Transformationen, daher besitzen sie keine physische Position in der Welt. Sie sind nützlich für abstrakte Verhaltensweisen, wie Inventar- oder Attributverwaltung.
Szenenkomponente – Ein Typ von Actor-Komponente, der eine Transformation für die Weltpositionierung hinzufügt. Szenenkomponenten haben keine visuellen Darstellungen, daher eignen sie sich für nicht-visuelle, positionsbasierte Verhaltensweisen wie physikalische Kräfte, Kameras oder Audio.
Grundkörper-Komponente – Ein Typ von Szenenkomponente, der visuelle und physikalische Darstellung hinzufügt. Sie eignen sich für das Rendern von visuellen Elementen und Kollisionsvolumen.
In Unity können Sie komplexe GameObjects mit einer Parent-Child-Beziehung erstellen. Zum Beispiel kann ein Parent-Objekt mehrere Child-Objekte mit eigenen Meshs, Collidern oder Verhaltensweisen haben.
In UE können Sie Actors mit einer ähnlichen Hierarchie erstellen, indem Sie Komponenten anstelle von Child-Actors verwenden, um Performance- und Speicherkosten zu reduzieren.
Detailliertere Informationen über das Komponentensystem von UE finden Sie unter Komponenten.
Vergleich von Update() und Tick()
In Unity werden Komponentenaktualisierungen hauptsächlich durch Update() und FixedUpdate() in MonoBehaviour gesteuert.
In UE verwenden Actors Tick() (standardmäßig aktiviert), und Komponenten verwenden optional TickComponent() (standardmäßig deaktiviert).
Standardmäßig erfolgt das Ticking einmal pro Frame. Sie können ein anderes Tick-Intervall angeben, indem Sie eine Tick-Gruppe zuweisen, wie z. B. TG_DuringPhysics. Sie können auch eine Tick-Abhängigkeit angeben, um Ticks zu verhindern, bis eine andere angegebene Tick-Funktion abgeschlossen ist.
Detailliertere Informationen finden Sie unter den folgenden Ressourcen:
Gameplay-Framework
Das Gameplay-Framework von Unreal Engine ist eine Sammlung von Klassen, einschließlich Actors und Komponenten, die Ihnen eine modulare Grundlage bieten, auf der Sie Ihre Spielerlebnisse aufbauen können.
Wenn Sie die Implementierung von Gameplay in Unity mit der Verwendung des Gameplay-Frameworks von UE vergleichen, gibt es mehr Unterschiede als Gemeinsamkeiten. Daher empfehlen wir Ihnen, den Abschnitt Gameplay-Framework durchzusehen, um mehr darüber zu erfahren, wie die in diesem Dokument behandelten Konzepte in das Framework passen. Zusätzlich behandeln die folgenden Abschnitte einige wichtige Framework-Klassen auf hohem Level.
Wichtige UObject-Subklassen
Level – Enthält eine Sammlung von Spielelementen, die zusammen ein Level in Ihrem Spiel bilden. Levels sind ähnlich wie Szenen in Unity.
Daten-Asset – Wird verwendet, um Assets zu definieren, die Daten für Ihr Spiel speichern. Daten-Assets sind ähnlich wie ScriptableObjects in Unity.
Wichtige Actor-Subklassen
Pawn – Agiert als ein „Agent“ innerhalb der Welt. Ein Controller kann einen Pawn übernehmen und so die Steuerung über ihn ergreifen.
Charakter – Ein Typ von Pawn, der einen humanoiden Charakter darstellt und grundlegende Bewegungs- und Kollisionsfunktionen bietet.
Controller – Verantwortlich für die Steuerung der Pawns, nachdem er sie in Besitz genommen hat.
PlayerController – Wird verwendet, um einem lokalen menschlichen Spieler die Kontrolle über einen Pawn zu ermöglichen.
AIController – Wird verwendet, um einen Pawn mit künstlicher Intelligenz zu steuern.
Spiel-Modus – Ein Manager-Actor, der Ihr Spiel definiert und einrichtet.
Spielzustand – Enthält die Zustandsinformationen des Spiels.
Spielerzustand – Enthält die Zustandsinformationen eines Spielers. Der Spielzustand verfolgt alle Spielerzustände in einem Array.