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.

Grupos

Grupos no Godot funcionam assim como tags em outros programas. Você pode adicionar um nó a quantos grupos quiser. Aí, no código, você pode usar a SceneTree para:

  • Obter uma lista de nós em um grupo.

  • Chamar um método em todos os nós de um grupo.

  • Enviar uma notificação a todos os nós de um grupo.

É um recurso muito útil para organizar cenas grandes e desacoplar o seu código.

Gerenciando grupos

Para criar um grupo, basta adicionar um nó a um grupo com um novo nome, da mesma forma, um grupo é removido quando todos os nós são removidos dele.

Há duas maneiras de acrescentar/remover nós aos grupos:

Dica

Embora não seja estritamente necessário, é recomendado usar a convenção de nomenclatura snake_case para nomes de grupos.

Usando a doca de Grupos

Você pode criar novos grupos usando a doca de Grupos.

../../_images/groups_dock.webp

Selecione um nó na aba Cena e então clique no botão com o símbolo de +.

../../_images/groups_add_new_group_button.webp

O modal de Criar Novo Grupo vai aparecer. Digita o nome do grupo no campo.

Você pode ativar a opção "Global" para tornar este grupo visível no projeto inteiro, e permitir seu uso em qualquer cena do projeto. Grupos globais também podem receber uma descrição.

Quando estiver pronto, clique em Ok para criar.

../../_images/groups_add_new_group_modal.webp

Você deverá ver os novos grupos aparecerem na doca de Grupos em Grupos de Cena se a opção Global não estiver marcada, ou em Grupos Globais se essa opção estiver marcada.

Um nó selecionado na aba Cena pode ser adicionado a grupos marcando a caixa de seleção à esquerda dos grupos na aba Grupos. Ao criar um novo grupo, o nó selecionado será adicionado ao grupo automaticamente.

../../_images/groups_dock_with_created_groups.webp

Todos os grupos presentes no projeto que foram marcados como Globais, criados em qualquer cena, ficarão visíveis na seção Grupos Globais.

Qualquer outro grupo derivado de nós na cena atual aparecerá em Grupos da Cena.

Aviso

Por baixo dos panos, grupos Globais e da Cena são a mesma coisa. Grupos com o mesmo nome serão considerados o mesmo grupo. Esse recurso é apenas organizacional.

../../_images/groups_node_tab_with_multiple_types_of_groups.webp

Você pode gerenciar Grupos Globais na aba Grupos da doca Globais, dentro das Configurações do Projeto. Lá, você poderá adicionar novos grupos globais ou alterar nomes e descrições de grupos existentes.

../../_images/groups_global_groups_settings.webp

Usando código

Você também pode gerenciar grupos a partir de scripts. O código abaixo adiciona o nó com este script anexado ao grupo guards assim que ele entra na árvore de cena.

func _ready():
    add_to_group("guards")

Imagine que você está criando um jogo de infiltração. Quando um inimigo avista o jogador, você quer que todos os guardas e robôs fiquem em alerta.

No exemplo fictício abaixo, usamos SceneTree.call_group() para alertar todos os inimigos de que o jogador foi avistado.

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

O código acima chama a função enter_alert_mode em cada membro do grupo guards.

Para obter a lista completa de nós no grupo guards como uma array, você pode chamar SceneTree.get_nodes_in_group():

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

A classe SceneTree fornece muitos métodos úteis para interagir com cenas, suas hierarquias e grupos de nós. Ela permite facilmente trocar ou recarregar cenas, sair do jogo, pausá-lo ou retomá-lo. Ela também oferece sinais úteis.