Instanziieren

Einführung

Eine einzelne Szene zu erstellen und ihr alle benötigten Nodes hinzuzufügen, kann bei kleinen Projekten funktionieren. Aber wenn ein Projekt an Größe und Komplexität zunimmt, wird der Nodebaum schnell unübersichtlich. Godot erlaubt es, ein Projekt in beliebig viele Szenen aufzuteilen. Damit steht Ihnen ein mächtiges Werkzeug zur Verfügung, das Ihnen hilft, die verschiedenen Komponenten Ihres Spiels zu organisieren.

In Szenen und Nodes haben Sie gelernt, dass eine Szene eine Sammlung von Nodes ist, die in einer Baumstruktur organisiert sind, mit einem Node als Wurzel.

../../_images/tree.png

Sie können beliebig viele Szenen erstellen und speichern. Auf diese Weise gespeicherte Szenen werden "Verpackte Szenen" genannt und haben die Dateinamenerweiterung .tscn.

../../_images/instancingpre.png

Sobald eine Szene gespeichert wurde, kann sie in eine andere Szene instanziiert werden, als wäre sie ein Node.

../../_images/instancing.png

Im obigen Bild wurde Szene B als Instanz zu Szene A hinzugefügt.

Instanziieren anhand eines Beispiels

Um zu lernen, wie die Instanziierung funktioniert, laden wir zunächst ein Beispielprojekt herunter: instancing.zip.

Entpacken Sie dieses Projekt in ein beliebiges Verzeichnis. Öffnen Sie dann Godot und fügen dieses Projekt über die Schaltfläche 'Importieren' dem Projektmanager hinzu:

../../_images/instancing_import.png

Navigieren Sie in den entpackten Ordner und öffnen die darin liegende Datei "project.godot". Danach wird das neue Projekt in der Projektliste angezeigt. Das Projekt kann über den Button 'Bearbeiten' bearbeitet werden.

Das Projekt enthält zwei Szenen: "Ball.tscn" und "Main.tscn". Die Ballszene verwendet einen RigidBody2D) kollidieren kann.

../../_images/instancing_ballscene.png ../../_images/instancing_mainscene.png

Öffnen Sie die Main Szene und wählen den Wurzelnode aus:

../../_images/instancing_mainroot.png

Wir wollen der Main Szene eine Instanz der Ball Szene hinzufügen. Klicken Sie auf den kettenförmig Schaltfläche (dessen Hover-text "Instantiiere eine Szenendatei als Node." lautet) und wählen die Datei Ball.tscn aus.

../../_images/instancing_linkbutton.png

Der Ball wird in der oberen linken Ecke des Bildschirmbereiches (dies entspricht den Koordinaten (0, 0)) plaziert. Bewege den Ball durch drücken und ziehen der Maustasten in die obere Mitte der Szene:

../../_images/instancing_placeball.png

Drücken Sie "Starten" und schauen zu wie der Ball in den unteren Teil der Szene fällt:

../../_images/instancing_playbutton.png

Mehrere Instanzen

Sie können einer Szene beliebig viele Instanzen hinzufügen, indem Sie entweder erneut auf die Schaltfläche "Instanz" klicken oder auf die Ballinstanz klicken oder drücken Sie :kbd: Strg + D (: kbd:` Cmd + D` auf MacOS) um es zu duplizieren:

../../_images/instancing_multiball.png

Wenn Sie die Szene erneut starten, werden all Bälle fallen.

../../_images/instancing_multiball.gif

Instanzen bearbeiten

Öffnen Sie die Ball Szene, klicken auf PhysicsMaterial um es auszuklappen und setzen die Bounce Eigenschaft auf 1.

../../_images/instancing_physicsmat2.png

Drücken Sie auf "Starten". Sie werden bemerken, dass alle Instanzen des Balles stärker springen. Da die instantiierten Bälle auf der gespeicherten Szene basieren, betreffen alle Änderungen in dieser Szene auch alle Instanzen.

Sie können auch einzelne Instanzen anpassen. Setzen Sie den Bounce Wert zurück auf 0 und gehen dann in die Main Szene. Wählen Sie einen instanziierten Ball aus und setze dessen Bounce Wert auf 1. Ressourcen wie PhysicsMaterial werden zwischen verschiedenen Instanzen geteilt, deshalb wollen wir sie einzigartig machen. Drücken Sie dazu auf den Pfeil nach unten und wählen "Einzigartig machen" aus. Drücken Sie danach auf "Starten".

../../_images/instancing_property.png

Neben der angepassten Eigenschaft erscheint eine graue "Rückgängig"-Schaltfläche. Diese Schaltfläche wird angezeigt, wenn Sie eine Eigenschaft in einer instanziierten Szene bearbeitet haben. Selbst wenn der Wert in der Originalszene angepasst wird behält die Instanz den benutzerdefinierten Wert bei. Durch Drücken der "Rückgängig"-Schalfläche, wird die Eigenschaft auf den Wert der gespeicherten Szene zurückgesetzt.

Fazit

Die Instanziierung kann nützlich sein, wenn Sie viele Kopien desselben Objekts erstellen möchten. Es ist auch möglich, mithilfe von GDScript Instanzen im Code zu erstellen, siehe dazu Instanziieren (Fortsetzung).