Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
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:
Durante la progettazione, attraverso il pannello Gruppi nell'editor, o la scheda Gruppi nel pannello Globali nelle impostazioni del progetto.
Durante l'esecuzione, chiamando Node.add_to_group() o Node.remove_from_group().
Suggerimento
Sebbene non sia strettamente necessario, si consiglia di utilizzare la convenzione di denominazione snake_case per i nomi dei gruppi.
Utilizzare il pannello Gruppi
È possibile creare nuovi gruppi attraverso il pannello Gruppi.
Selezionare un nodo nel pannello Scena, poi cliccare sul pulsante Aggiungi con il simbolo +.
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.
I nuovi gruppi dovrebbero apparire nel pannello 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.
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.
È possibile gestire i Gruppi globali nella scheda Gruppi del pannello Globali, all'interno delle Impostazioni del progetto. Da qui, è possibile aggiungere nuovi gruppi globali o cambiare i nomi e le descrizioni dei gruppi esistenti.
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")
public override void _Ready()
{
base._Ready();
AddToGroup("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")
public void _OnPlayerDiscovered()
{
GetTree().CallGroup("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")
var guards = GetTree().GetNodesInGroup("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.