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

While not strictly required, it's recommended to use the snake_case naming convention for group names.

Using the Groups dock

You can create new groups using the Groups dock.

../../_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

You should see the new groups appear in the Groups dock under Scene Groups if the Global option was unmarked, or under Global Groups if that option was marked.

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

You can manage Global Groups in the Groups tab of the Globals dock, inside Project Settings. There, you will be able to add new global groups, or change existing groups' names and descriptions.

../../_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.