Nodes und Szenen

In Überblick über Godot's Schlüsselkonzepte haben wir gesehen, dass ein Godot-Spiel ein Baum von Szenen ist und dass jede Szene ein Baum von Nodes ist. In dieser Lektion erklären wir ein wenig mehr über sie. Sie werden auch Ihre erste Szene erstellen.

Nodes

Nodes sind die grundlegenden Bausteine Ihres Spiels. Sie sind wie die Zutaten in einem Rezept. Es gibt Dutzende von Arten, die ein Bild anzeigen, einen Sound abspielen, eine Kamera darstellen und vieles mehr.

../../_images/nodes_and_scenes_nodes.png

Alle Nodes haben die folgenden Attribute:

  • Ein Name.

  • Bearbeitbare Eigenschaften.

  • Sie erhalten Callbacks, um jeden Frame zu aktualisieren.

  • Sie können sie um neue Eigenschaften und Funktionen erweitern.

  • Sie können sie einem anderen Node als Kind hinzufügen.

Das letzte Attribut ist der Schlüssel. Gemeinsam bilden die Nodes einen Baum, der eine leistungsstarke Funktion zur Organisation von Projekten darstellt. Da verschiedene Nodes unterschiedliche Funktionen haben, kann man durch ihre Kombination ein komplexeres Verhalten erreichen. Wie wir bereits gesehen haben, können Sie einen spielbaren Charakter erstellen, dem die Kamera folgt, indem Sie ein kinematischen Körpernode namens "Charakter", ein Sprite-Node, ein Kamera-Node und ein Kollisionsform-Node verwenden.

../../_images/nodes_and_scenes_character_nodes.png

Szenen

Wenn Sie Nodes in einem Baum organisieren, wie unsere Figur, nennen wir dieses Konstrukt eine Szene. Nach dem Speichern funktionieren Szenen wie neue Nodetypen im Editor, wo Sie sie als Kind eines bestehenden Nodes hinzufügen können. In diesem Fall erscheint die Instanz der Szene als ein einzelnes Node, dessen Interna ausgeblendet sind.

Mit Szenen können Sie den Code Ihres Spiels strukturieren, wie Sie wollen. Sie können Nodes zusammenstellen, um benutzerdefinierte und komplexe Nodetypen zu erstellen, wie z. B. eine Spielfigur, die läuft und springt, einen Lebensbalken, eine Truhe, mit der Sie interagieren können, und vieles mehr.

../../_images/nodes_and_scenes_3d_scene_example.png

Der Godot-Editor ist im Wesentlichen ein Szeneneditor. Er verfügt über eine Vielzahl von Werkzeugen zur Bearbeitung von 2D- und 3D-Szenen sowie von Benutzeroberflächen. Ein Godot-Projekt kann so viele dieser Szenen enthalten, wie Sie benötigen. Die Engine benötigt nur eine als Hauptszene Ihrer Anwendung. Dies ist die Szene, die Godot zuerst lädt, wenn Sie oder ein Spieler das Spiel starten.

Zusätzlich zu ihrer Funktion als Nodes haben Szenen die folgenden Attribute:

  1. Sie haben immer ein Wurzelnode, wie der "Charakter" in unserem Beispiel.

  2. Sie können sie auf Ihrer Festplatte speichern und später laden.

  3. Sie können so viele Instanzen einer Szene erstellen, wie Sie möchten. Sie könnten fünf oder zehn Charaktere in Ihrem Spiel haben, die aus Ihrer Charakter-Szene erstellt wurden.

Erstellen der ersten Szene

Lassen Sie uns unsere erste Szene mit einem einzelnen Node erstellen. Dazu müssen Sie zunächst ein neues Projekt erstellen. Nachdem Sie das Projekt geöffnet haben, sollten Sie einen leeren Editor sehen.

../../_images/nodes_and_scenes_01_empty_editor.png

In einer leeren Szene zeigt das Szenendock auf der linken Seite mehrere Optionen zum schnellen Hinzufügen eines Wurzelnodes. "2D Szene" fügt ein Node2D-Node hinzu, "3D Szene" fügt einen Spatial-Node hinzu, "User Interface" fügt ein Control-Node hinzu, und "Other Node" lässt Sie ein beliebiges Node auswählen. Dies ist gleichbedeutend mit dem Drücken der Schaltfläche "Kindnode hinzufügen". Diese Voreinstellungen dienen der Bequemlichkeit; sie sind nicht obligatorisch.

Wir werden ein einzelnes Label-Node zu unserer Szene hinzufügen. Dessen Funktion ist es, Text auf dem Bildschirm zu zeichnen.

Drücken Sie die Schaltfläche "Kindnode hinzufügen" oben links im Szenendock, um ein Node zu erstellen. Diese Schaltfläche fügt das gewählte Node als Kind des aktuell ausgewählten Nodes oder in einer leeren Szene als Wurzel hinzu.

../../_images/nodes_and_scenes_02_scene_dock.png

Das Dialogfeld "Node erstellen" wird geöffnet und zeigt die lange Liste der verfügbaren Nodes an.

../../_images/nodes_and_scenes_03_create_node_window.png

Wählen Sie das Label-Node. Sie können seinen Namen eingeben, um die Liste zu filtern.

../../_images/nodes_and_scenes_04_create_label_window.png

Klicken Sie auf das Label-Node, um ihn auszuwählen, und klicken Sie auf die Schaltfläche Erstellen am unteren Rand des Fensters.

../../_images/nodes_and_scenes_05_editor_with_label.png

Es passiert viel, wenn Sie das erste Node einer Szene hinzufügen. Die Szene wechselt in den 2D-Arbeitsbereich, da Label ein 2D-Nodetyp ist. Das Label erscheint, ausgewählt, in der oberen linken Ecke des Ansichtsfensters. Das Node erscheint im Szenendock auf der linken Seite, und die Eigenschaften des Nodes erscheinen im Inspektor-Dock auf der rechten Seite.

Ändern der Eigenschaften eines Nodes

Mit dem nächsten Schritt wird die "Text"-Eigenschaft des Labels geändert. Ändern wir es zu "Hello World".

Gehen Sie zum Inspektor-Dock auf der rechten Seite des Ansichtsfensters. Klicken Sie in das Feld unter der Eigenschaft Text und geben Sie "Hello World" ein.

../../_images/nodes_and_scenes_06_label_text.png

Sie sehen, wie der Text im Ansichtsfenster gezeichnet wird, während Sie tippen.

Sie können Ihr Label-Node im Ansichtsfenster verschieben, indem Sie das Verschiebungswerkzeug in der Werkzeugleiste auswählen.

../../_images/nodes_and_scenes_07_move_tool.png

Klicken Sie bei ausgewähltem Label auf eine beliebige Stelle im Ansichtsfenster, um sie in die Mitte der durch das Rechteck begrenzten Ansicht zu verschieben.

../../_images/nodes_and_scenes_08_hello_world_text.png

Ausführen der Szene

Alles ist bereit, die Szene abzuspielen! Drücken Sie die Schaltfläche "Play Scene" oben rechts auf dem Bildschirm oder drücken Sie F6.

../../_images/nodes_and_scenes_09_play_scene_button.png

Ein Popup fordert Sie auf, die Szene zu speichern, was für die Ausführung erforderlich ist.

../../_images/nodes_and_scenes_10_save_scene_popup.png

Klicken Sie auf die Schaltfläche Ja, und klicken Sie im angezeigten Dateibrowser auf die Schaltfläche Speichern, um sie unter dem Namen "Label.tscn" zu speichern.

../../_images/nodes_and_scenes_11_save_scene_as.png

Bemerkung

Der Dialog "Szene speichern unter" erlaubt, wie andere Dateidialoge im Editor, nur das Speichern von Dateien innerhalb des Projekts. Der res:// Pfad am oberen Rand des Fensters stellt das Stammverzeichnis des Projekts dar und steht für "resource path". Für weitere Informationen über Dateipfade in Godot siehe Dateisystem.

Die Anwendung sollte sich in einem neuen Fenster öffnen und den Text "Hello World" anzeigen.

../../_images/nodes_and_scenes_12_final_result.png

Schließen Sie das Fenster oder drücken Sie F8, um die laufende Szene zu beenden.

Bemerkung

Falls dies nicht sofort funktioniert und ein hiDPI-Display gebraucht wird, kann dies unter Projekt → Projekteinstellungen → Display → Window aktiviert werden, indem unter Dpi, Allow Hidpi eingeschaltet wird.

Die Hauptszene festlegen

Um unsere Testszene auszuführen, haben wir die Schaltfläche "Play Scene" verwendet. Eine weitere Schaltfläche daneben ermöglicht es Ihnen, die Hauptszene des Projekts einzustellen und auszuführen. Dazu können Sie F5 drücken.

../../_images/nodes_and_scenes_13_play_button.png

Ein Popup-Fenster erscheint und lädt Sie ein, die Hauptszene auszuwählen.

../../_images/nodes_and_scenes_14_main_scene_popup.png

Klicken Sie auf die Schaltfläche "Auswählen", und doppelklicken Sie im daraufhin angezeigten Dateidialog auf Label.tscn.

../../_images/nodes_and_scenes_15_select_main_scene.png

Die Demo sollte wieder laufen. In Zukunft wird Godot jedes Mal, wenn Sie das Projekt ausführen, diese Szene als Startpunkt verwenden.

Bemerkung

Der Editor speichert den Pfad der Hauptszene in der Datei project.godot in Ihrem Projektverzeichnis. Sie können diese Textdatei direkt bearbeiten, um die Projekteinstellungen zu ändern, Sie können aber auch das Fenster "Projekt -> Projekteinstellungen" dafür verwenden.

Im nächsten Teil werden wir ein weiteres Schlüsselkonzept in Spielen und in Godot besprechen: das Erstellen von Instanzen einer Szene.