Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Gruppen

Gruppen in Godot funktionieren wie Tags in anderer Software. Sie können einen Node zu so vielen Gruppen hinzufügen, wie Sie möchten. Im Code können Sie dann den SceneTree verwenden, um:

  • Eine Liste von Nodes in einer Gruppe abzurufen.

  • Eine Methode für alle Nodes in einer Gruppe aufrufen.

  • Eine Benachrichtigung an alle Nodes in einer Gruppe senden.

Dies ist eine nützliche Funktion, um große Szenen zu organisieren und Code zu entkoppeln.

Verwalten von Gruppen

Gruppen werden durch Hinzufügen eines Nodes zu einem neuen Gruppennamen erstellt, und ebenso werden sie durch Entfernen aller Nodes aus einer bestimmten Gruppe entfernt.

Es gibt zwei Möglichkeiten, Nodes zu Gruppen hinzuzufügen/zu entfernen:

Verwendung des Node-Docks

Sie können Nodes in der aktuellen Szene zu Gruppen hinzufügen, indem Sie den "Gruppen"-Tab im Node-Dock verwenden.

../../_images/groups_node_tab.webp

Wählen Sie einen oder mehrere Nodes im Szenendock aus, geben Sie den Gruppennamen in das Feld ein und klicken Sie dann auf Hinzufügen.

../../_images/groups_add_node_to_group.webp

Jetzt sollte die Gruppe erscheinen.

../../_images/groups_node_after_adding.webp

In einem komplexen Projekt kann es vorkommen, dass Sie viele Gruppen oder große Szenen mit vielen Nodes haben. Über das Gruppeneditor-Fenster können Sie jeden Knoten zu Gruppen hinzufügen oder entfernen. Um darauf zuzugreifen, klicken Sie auf den "Gruppen verwalten"-Button.

../../_images/groups_manage_groups_button.webp

Das Gruppeneditor-Fenster erscheint. Hier ist ein Screenshot eines komplexen Projekts, um den Zweck des Tools zu veranschaulichen.

../../_images/groups_group_editor_window.webp

Es hat drei Spalten:

  1. Eine Liste von Gruppen, die von Nodes in der aktuellen Szene verwendet werden.

  2. Eine Liste von Nodes, die nicht Teil der ausgewählten Gruppe sind.

  3. Eine Liste der Nodes in der Gruppe.

Mit den Feldern am unteren Rand können Sie neue Gruppen hinzufügen oder Nodes in der zweiten und dritten Spalte filtern.

Bemerkung

Jeder ausgegraute Node-Name bedeutet, dass der Node der Gruppe in einer anderen Szene hinzugefügt wurde und Sie ihn hier nicht bearbeiten können. Dies geschieht vor allem bei Szeneninstanzen.

Verwendung von Code

Sie können Gruppen auch von Skripten aus verwalten. Der folgende Code fügt den Node, an den Sie das Skript anhängen, der Gruppe guards hinzu, sobald er den Szenenbaum betritt.

func _ready():
    add_to_group("guards")

Stellen Sie sich vor, Sie entwickeln ein Infiltrationsspiel. Wenn ein Feind den Spieler entdeckt, sollen alle Wachen und Roboter in Alarmbereitschaft sein.

Im folgenden fiktiven Beispiel verwenden wir SceneTree.call_group(), um alle Feinde darauf hinzuweisen, daß der Spieler entdeckt wurde.

func _on_player_spotted():
    get_tree().call_group("guards", "enter_alert_mode")

Der obige Code ruft die Funktion enter_alert_mode bei jedem Member der Gruppe guards auf.

Um die komplette Liste der Nodes in der guards-Gruppe als Array zu erhalten, kann man SceneTree.get_nodes_in_group() aufrufen:

var guards = get_tree().get_nodes_in_group("guards")

Die Klasse SceneTree bietet viele weitere nützliche Methoden zur Interaktion mit Szenen, ihrer Node-Hierarchie und Gruppen. Sie erlaubt es, Szenen einfach zu wechseln oder neu zu laden, das Spiel zu beenden oder es zu pausieren und zu beenden. Außerdem bietet sie nützliche Signale.