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 neue Gruppen über den Gruppen-Tab im Node-Dock erstellen.

../../_images/groups_node_tab.webp

Select a node in the Scene dock then click the add button with the + symbol.

../../_images/groups_add_new_group_button.webp

Es sollte nun das Modal "Neue Gruppe erstellen" angezeigt werden. Geben Sie den Gruppennamen in das Feld ein.

Sie können optional die Option "Global" markieren, wodurch die Gruppe projektweit sichtbar wird und in jeder Projektszene wiederverwendet werden kann. Außerdem können Sie dann eine Beschreibung für die Gruppe eingeben.

Wenn Sie fertig sind, drücken Sie Ok, um sie zu erstellen.

../../_images/groups_add_new_group_modal.webp

Die neuen Gruppen sollten auf dem Gruppen-Tab unter Szenengruppen erscheinen, wenn die Option Global nicht markiert war, oder unter Globale Gruppen, wenn diese Option markiert war.

A selected Node from the Scene dock can be added into groups by marking the checkbox on the left side of the groups in the Groups dock. The node you had selected when creating a new group will be automatically checked.

../../_images/groups_node_tab_with_created_groups.webp

Alle im Projekt vorhandenen Gruppen, die als Global markiert wurden und aus einer beliebigen Szene erstellt wurden, werden unter Globale Gruppen angezeigt.

Jede andere Gruppe, die von Nodes in der aktuellen Szene abgeleitet ist, erscheint unter Szenengruppen.

Warnung

Für globale Gruppen und Szenengruppen wird dieselbe Logik verwendet. Gruppen mit demselben Namen werden als ein und dieselbe Gruppe betrachtet. Diese Funktion ist rein organisatorisch.

../../_images/groups_node_tab_with_multiple_types_of_groups.webp

Globale Gruppen können Sie im Globale Gruppen-Dock in den Projekteinstellungen verwalten. Dort können Sie neue globale Gruppen hinzufügen oder die Namen und Beschreibungen der vorhandenen Gruppen ändern.

../../_images/groups_global_groups_settings.webp

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.