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 Dir ein mächtiges Werkzeug zur Verfügung, das Dir hilft, die verschiedenen Komponenten Deines Spiels zu organisieren.

In Szenen und Nodes hast Du 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.

Entpacke dieses Projekt in ein beliebiges Verzeichnis. Öffne dann Godot und füge dieses Projekt über die Schaltfläche ‚Importieren‘ dem Projektmanager hinzu:

../../_images/instancing_import.png

Navigiere in den entpackten Ordner und öffne 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

Öffne die Main Szene und wähle den Wurzelnode aus:

../../_images/instancing_mainroot.png

Wir wollen der Main Szene eine Instanz der Ball Szene hinzufügen. Klicke auf den kettenförmig Schaltfläche (dessen Hover-text „Instantiiere eine Szenendatei als Node.“ lautet) und wähle 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ücke „Starten“ und schau zu wie der Ball in den unteren Teil der Szene fällt:

../../_images/instancing_playbutton.png

Mehrere Instanzen

Du kannst der Szene so viele Instanzen hinzufügen wie du möchtest. Drücke dazu wieder den“Instanziieren“ Schaltfläche, oder klicke auf die Ballinstanz und drücke „Duplizieren“ (Ctrl-D):

../../_images/instancing_multiball.png

Wenn du die Szene erneut startest, werden all Bälle fallen.

../../_images/instancing_multiball.gif

Instanzen bearbeiten

Öffne die Ball Scene und füge ein PhysicsMaterial hinzu, indem du auf den Pfeil nach unten clickst und „Neues PhysicsMaterial“ auswählst.

../../_images/instancing_physicsmat1.png

Klappe es dann aus indem du es anklickst und setze den Bounce Wert auf 1.

../../_images/instancing_physicsmat2.png

Drücke auf „Starten“. Du wirst 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.

Es können auch einzelne Instanzen angepasst werden. Setze dazu den Bounce Wert zurück auf 0 und gehe dann in die Main Szene. Wähle einen instanziierten Ball aus und setze dessen Bounce Wert auf 1. Resourcen wie PhysicsMaterial werden zwischen verschiedenen Instanzen geteilt, deshalb wollen wir sie einzigartig machen. Drücke dazu auf den Pfeil nach unten und wähle „Einzigartig machen“ aus. Drücke 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 du eine Eigenschaft in einer instanziierten Szene bearbeitet hast. 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 Du viele Kopien desselben Objekts erstellen möchtest. Es ist auch möglich, mithilfe von GDScript Instanzen im Code zu erstellen, siehe dazu Instanziieren (Fortsetzung).