Anwendung objektorientierter Prinzipien in Godot

Die Engine bietet zwei Hauptmöglichkeiten zum Erstellen wiederverwendbarer Objekte: Skripte und Szenen. Beide definieren technisch gesehen keine Klassen unter der Haube.

Bei vielen empfohlenen Vorgehensweisen mit Godot werden jedoch objektorientierte Programmierprinzipien auf die Skripte und Szenen angewendet, aus denen Ihr Spiel besteht. Deshalb ist es nützlich zu verstehen, wie wir sie als Klassen betrachten können.

In diesem Handbuch wird kurz erläutert wie Skripte und Szenen im Kern der Engine funktionieren, damit Sie ein besseres Verständnis für deren funktionsweise erhalten.

Wie Skripte in der Engine funktionieren

Die Engine bietet integrierte Klassen wie Node. Sie können diese erweitern um mithilfe eines Skripts abgeleitete Typen zu erstellen.

Diese Skripte sind technisch gesehen keine Klassen. Stattdessen handelt es sich um Ressourcen, die der Engine eine Folge von Initialisierungen mitteilen, die für eine der integrierten Klassen der Engine ausgeführt werden sollen.

Die internen Klassen von Godot verfügen über Methoden, die die Daten einer Klasse mit einem ClassDB registrieren. Diese Datenbank bietet Laufzeitzugriff auf Klasseninformationen. ClassDB enthält Informationen zu Klassen wie:

  • Eigenschaften

  • Methoden

  • Konstanten

  • Signale

Diese ClassDB ist das, was Objekte überprüfen, wenn sie eine Operation wie den Zugriff auf eine Eigenschaft oder den Aufruf einer Methode durchführen. Es prüft die Datensätze der Datenbank und die Datensätze der Basistypen des Objekts, um zu sehen, ob das Objekt die Operation unterstützt.

Das Anhängen eines Script an Ihr Objekt erweitert die Methoden, Eigenschaften und Signale, die von der ClassDB zur Verfügung stehen.

Bemerkung

Auch Skripte, die das Schlüsselwort extends nicht verwenden, erben implizit von der Basisklasse der Engine Reference. Folglich können Sie Skripte ohne das Schlüsselwort extends aus dem Code instanziieren. Da sie jedoch Referenz erweitern, können Sie sie nicht an einen Node anhängen.

Szenen

ElementeDas Verhalten von Szenen hat viele Ähnlichkeiten mit Klassen, so dass es sinnvoll sein kann, sich eine Szene als Klasse vorzustellen. Szenen sind wiederverwendbare, instanzierbare und vererbbare Gruppen von Nodes. Das Erzeugen einer Szene ist vergleichbar mit einem Skript, das Nodes erzeugt und sie mit add_child() als Unterobjekt hinzufügt.

Wir koppeln häufig eine Szene mit einem geskripteten Wurzel-Node, der die Nodes der Szene verwendet. Daher ist die Szene häufig eine Erweiterung des deklarativen Codes des Skripts.

Der Inhalt einer Szene hilft bei der Definition von:

  • Welche Nodes in dem Skript verfügbar sind

  • Wie sie organisiert sind

  • Wie sie initialisiert werden

  • Welche Signalverbindungen sie miteinander haben

Warum ist irgendetwas davon für die Organisation der Szene wichtig? Weil Instanzen von Szenen Objekte sind. Infolgedessen gelten viele objektorientierte Prinzipien, die für geschriebenen Code gelten, auch für Szenen: Einzelverantwortung, Kapselung und andere.

Die Szene ist immer eine Erweiterung des Skripts, das dem Wurzel-Node angehängt ist, sodass Sie sie als Teil einer Klasse interpretieren können.

Die meisten der in dieser Best Practices-Reihe erläuterten Techniken bauen auf diesem Punkt auf.