Groupes

Les groupes dans Godot fonctionnent comme des balises dans d'autres logiciels. Vous pouvez ajouter un nœud à autant de groupes que vous le souhaitez. Ensuite, dans le code, vous pouvez utiliser le SceneTree pour :

  • Obtenir la liste des nœuds d'un groupe.

  • Appeler une méthode sur tous les nœuds d'un groupe.

  • Envoyer une notification à tous les nœuds d'un groupe.

Il s'agit d'une fonctionnalité utile pour organiser les grandes scènes et découpler le code.

Gestion des groupes

Groups are created by adding a node to a new group name, and likewise they are removed by removing all nodes from a given group.

Il existe deux façons d’ajouter/retirer des nœuds à des groupes :

En utilisant le dock Node

Vous pouvez ajouter des nœuds de la scène actuelle à des groupes à l'aide de l'onglet Groupes dans le dock des nœuds.

../../_images/groups_node_tab.png

Sélectionnez un ou plusieurs nœuds dans le dock Scène et écrivez le nom du groupe dans le champ, puis cliquez sur Ajouter.

../../_images/groups_add_node_to_group.png

Vous devriez voir maintenant le groupe apparaitre.

../../_images/groups_node_after_adding.png

Dans un projet complexe, vous pouvez vous retrouver avec de nombreux groupes ou de grandes scènes comportant de nombreux nœuds. Vous pouvez ajouter ou supprimer n'importe quel nœud à des groupes à l'aide de la fenêtre Éditeur de groupe. Pour y accéder, cliquez sur le bouton Gérer les groupes.

../../_images/groups_manage_groups_button.png

La fenêtre de l'éditeur de groupe apparaît. Voici une capture d'écran d'un projet complexe pour illustrer l'utilité de l'outil.

../../_images/groups_group_editor_window.png

Il y a trois colonnes :

  1. Une liste des groupes utilisés par les noeuds dans la scène actuelle.

  2. Une liste de nœuds qui ne font pas partie du groupe sélectionné.

  3. Une liste des nœuds dans le groupe.

Les champs en bas de la page vous permettent d'ajouter de nouveaux groupes ou de filtrer les nœuds dans les deuxième et troisième colonnes.

Note

Tout nom de nœud qui est grisé signifie que le nœud a été ajouté au groupe dans une scène différente et que vous ne pouvez pas le modifier ici. Cela se produit en particulier sur les instances de scène.

En utilisant le code

Vous pouvez également gérer des groupes à partir de scripts. Le code suivant ajoute le nœud auquel vous attachez le script au groupe guards dès qu'il entre dans l'arbre de scène.

func _ready():
    add_to_group("guards")

Imaginez que vous créez un jeu d'infiltration. Lorsqu'un ennemi repère le joueur, vous voulez que tous les gardes et les robots soient en alerte.

Dans l'exemple fictif ci-dessous, nous utilisons SceneTree.call_group() pour alerter tous les ennemis que le joueur a été repéré.

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

Le code ci-dessus appelle la fonction enter_alert_mode sur chaque membre du groupe guards.

Pour obtenir la liste complète des nœuds du groupe guards sous forme de tableau, vous pouvez appeler SceneTree.get_nodes_in_group() :

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

La classe SceneTree fournit de nombreuses autres méthodes utiles pour interagir avec les scènes, leur hiérarchie de nœuds et les groupes. Elle permet de changer facilement de scène ou de les recharger, de quitter le jeu ou de le mettre en pause et de le remettre en pause. Elle fournit également des signaux utiles.