Gruppi

I gruppi in Godot funzionano come i tag in altri software. È possibile aggiungere un nodo a tutti i gruppi desiderati. Quindi, nel codice, è possibile utilizzare lo SceneTree per:

  • Ottenere una lista di nodi in un gruppo.

  • Chiamare un metodo su tutti i nodi in un gruppo.

  • Inviare una notifica a tutti i nodi in un gruppi.

Questa è un'utile funzionalità per organizzare grandi scene e disaccoppiare il codice.

Gestione dei gruppi

I gruppi sono creati aggiungendo un nodo a un nuovo nome di gruppo e, similmente, sono rimossi rimuovendo tutti i nodi da un determinato gruppo.

Esistono due modi per aggiungere/rimuovere i gruppi dai nodi:

Utilizzo del pannello Nodo

È possibile creare nuovi gruppi utilizzando la scheda Gruppi nel pannello Nodo.

../../_images/groups_node_tab.webp

Selezionare un nodo nel pannello Scena, poi cliccare sul pulsante Aggiungi con il simbolo +.

../../_images/groups_add_new_group_button.webp

Ora dovrebbe apparire la finestra modale "Crea un nuovo gruppo". Scrivere il nome del gruppo nel campo.

Facoltativamente, si può selezionare l'opzione "Globale", la quale renderà il gruppo visibile in tutto il progetto e riutilizzabile in qualsiasi scena del progetto. Ciò permetterà anche di assegnargli una descrizione.

Una volta terminato, premere Ok per crearlo.

../../_images/groups_add_new_group_modal.webp

I nuovi gruppi dovrebbero apparire nella scheda Gruppi, sotto "Gruppi di scena" se l'opzione Globale non è stata spuntata, oppure in "Gruppi globali" se tale opzione è stata spuntata.

Un nodo selezionato dal pannello Scena può essere aggiunto ai gruppi selezionando la casella di spunta sul lato sinistro dei gruppi nel pannello Gruppi. Il nodo selezionato durante la creazione di un nuovo gruppo sarà automaticamente selezionato.

../../_images/groups_node_tab_with_created_groups.webp

Tutti i gruppi presenti nel progetto segnati come globali, creati da qualsiasi scena, saranno visibili sotto "Gruppi globali".

Qualsiasi altro gruppo derivato dai nodi nella scena attuale apparirà in "Gruppi di scena".

Avvertimento

La stessa logica di base è utilizzata per entrambi i gruppi Globali e di Scena. I gruppi con lo stesso nome sono considerati gli stessi. Questa funzionalitàè puramente organizzativa.

../../_images/groups_node_tab_with_multiple_types_of_groups.webp

Si possono gestire i Gruppi globali nel pannello Gruppi globali, all'interno delle Impostazioni del progetto. Da qui, si possono aggiungere nuovi gruppi globali o cambiare i nomi e le descrizioni dei gruppi esistenti.

../../_images/groups_global_groups_settings.webp

Tramite codice

È anche possibile gestire i gruppi dagli script. Il seguente codice aggiunge il nodo a cui viene allegato lo script al gruppo guards appena entra nell'albero di scene.

func _ready():
    add_to_group("guards")

Si immagini di creare un gioco di infiltrazione. Quando un nemico individua il giocatore, si desidera che tutte le guardie e i robot siano in allerta.

Nell'esempio fittizio riportato di seguito, utilizziamo SceneTree.call_group() per avvertire tutti i nemici che il giocatore è stato individuato.

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

Il codice sopra chiama la funzione enter_alert_mode su ogni membro del gruppo guards.

È anche possibile ottenere la lista completa dei nodi nel gruppo guards sotto forma di array, chiamando SceneTree.get_nodes_in_group():

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

La classe SceneTree fornisce molti altri metodi utili per interagire con le scene, la loro gerarchia di nodi e i gruppi. Consente di cambiare facilmente le scene o ricaricarle, uscire dal gioco o metterlo in pausa e riprenderlo. Fornisce anche segnali utili.