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:
Während des Entwurfs mit Hilfe des Node-Docks im Editor.
Während der Ausführung, durch Aufruf von Node.add_to_group() oder Node.remove_from_group().
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.
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.
Jetzt sollte die Gruppe erscheinen.
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.
Das Gruppeneditor-Fenster erscheint. Hier ist ein Screenshot eines komplexen Projekts, um den Zweck des Tools zu veranschaulichen.
Es hat drei Spalten:
Eine Liste von Gruppen, die von Nodes in der aktuellen Szene verwendet werden.
Eine Liste von Nodes, die nicht Teil der ausgewählten Gruppe sind.
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")
public override void _Ready()
{
base._Ready();
AddToGroup("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")
public void _OnPlayerDiscovered()
{
GetTree().CallGroup("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")
var guards = GetTree().GetNodesInGroup("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.