Für C++-Programmierer
Für Blueprint-Skripts brauchen Sie lediglich die Unreal Engine. Alle nötigen Funktionen sind bereits Teil davon.
Um Code in C++ zu schreiben, laden Sie Visual Studio unter Windows herunter oder installieren Xcode unter macOS. Wenn Sie zum ersten Mal ein neues C++-Projekt in Unreal Engine erstellen (oder C++-Code zu einem bestehenden Projekt hinzufügen), erstellt Unreal Engine automatisch Visual Studio-Projektdateien für Sie.
Es gibt zwei Möglichkeiten, aus Ihrem Unreal Engine-Projekt auf Visual Studio zuzugreifen:
-
Doppelklicken Sie im Inhaltsbrowser auf eine C++-Klasse, um sie in Visual Studio zu öffnen.
-
Navigieren Sie im Hauptmenü zu Werkzeuge> Visual Studio öffnen. Diese Option wird nur angezeigt, wenn Ihr Projekt mindestens eine C++-Klasse enthält.
Ein wichtiger Unterschied zur Unreal Engine: Sie müssen Ihre Visual Studio-Projektdateien manchmal von Hand aktualisieren (zum Beispiel nachdem Sie eine neue Version der Unreal Engine heruntergeladen haben oder wenn Sie von Hand Änderungen an Quelldatei-Speicherorten auf der Festplatte vornehmen). Das können Sie auf zwei Arten tun:
-
Navigieren Sie im Hauptmenü von Unreal Engine zu Werkzeuge > Visual Studio-Projekt aktualisieren.
-
Rechtsklicken Sie im Verzeichnis Ihres Projekts auf die .uproject-Datei und wählen Sie Visual Studio-Projektdateien generieren.
Schreiben von Event-Funktionen (Start, Update usw.)
Wenn Sie zuvor schon mit MonoBehaviors gearbeitet haben, sollten Sie mit Methoden wie Start, Update und OnDestroy vertraut sein. Im Folgenden finden Sie einen Vergleich zwischen dem Unity-Verhalten und der Entsprechung für Unreal-Engine-Actors und -Komponenten.
In Unity haben Sie vermutlich eine einfache Komponente, die folgendermaßen aussieht:
public class MyComponent : MonoBehaviour
{
void Start() {}
void OnDestroy() {}
void Update() {}
}
In der Unreal Engine können Sie Code auf dem Actor selbst schreiben, anstatt nur neue Komponententypen zu coden. Das ist tatsächlich sehr verbreitet und nützlich.
Unreal-Engine-Actors verfügen über einen ähnlichen Methodensatz wie die Unity-Funktionen Start, OnDestroy und Update. Diese sehen Sie hier:
C++
UCLASS()
class AMyActor : public AActor
{
GENERATED_BODY()
// Wird zu Beginn des Spiels aufgerufen
void BeginPlay();
// Wird beim Zerstören aufgerufen
void EndPlay(const EEndPlayReason::Type EndPlayReason);
// Wird in jedem Frame zur Aktualisierung dieses Actor aufgerufen
void Tick(float DeltaSeconds);
};
Blueprint
Komponenten in der Unreal Engine enthalten unterschiedliche Funktionen. Hier ein einfaches Beispiel:
C++
UCLASS()
class UMyComponent : public UActorComponent
{
GENERATED_BODY()
// Wird aufgerufen, nachdem der besitzende Actor erstellt wurde
void InitializeComponent();
// Wird aufgerufen, wenn die Komponente oder der besitzende Actor zerstört wird
void UninitializeComponent();
// Komponentenversion von Tick
void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction);
};
Blueprint
Zur Erinnerung: In der Unreal Engine müssen Sie die Parent-Klasse-Version der Methode abrufen.
In Unity C# würde dies zum Beispiel als base.Update() bezeichnet, aber in Unreal Engine C++ verwenden Sie Super::TickComponent():
void UMyComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
// Hier benutzerdefiniertes Tick-Zeug
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
}
In C++ verwenden einige Klassen das Präfix A, andere das Präfix U. A verweist auf eine Actor-Subklasse, während U eine Objekt-Subklasse angibt. Ein weiteres gängiges Präfix ist F, das für die meisten einfachen Datenstrukturen und Nicht-UObject-Klassen verwendet wird.