Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Grupos

Los grupos en Godot funcionan como etiquetas en otros programas. Puedes agregar un nodo a tantos grupos como desees. Luego, en el código, puedes utilizar el SceneTree para:

  • Obtener una lista de nodos en un grupo.

  • Llamar a un método en todos los nodos de un grupo.

  • Enviar una notificación a todos los nodos de un grupo.

Esta es una característica útil para organizar escenas grandes y desacoplar el código.

Administrar grupos

Los grupos se crean agregando un nodo a un nuevo nombre de grupo, y de manera similar, se eliminan eliminando todos los nodos de un grupo dado.

Hay dos modos de agregar/remover grupos de nodos:

Usando el panel "Nodos"

Puedes agregar nodos en la escena actual a grupos utilizando la pestaña "Grupos" en el panel "Nodos".

../../_images/groups_node_tab.webp

Seleccione uno o más nodos en el panel Escena y escriba el nombre del grupo en el campo, luego haga clic en Agregar.

../../_images/groups_add_node_to_group.webp

Ahora deberías ver el grupo aparecer.

../../_images/groups_node_after_adding.webp

En un proyecto complejo, puede terminar con muchos grupos o escenas grandes con muchos nodos. Puede agregar o quitar cualquier nodo a los grupos usando la ventana del Editor de grupos. Para acceder a él, haga clic en el botón Administrar grupos.

../../_images/groups_manage_groups_button.webp

Aparece la ventana Editor de grupos. Aquí hay una captura de pantalla de un proyecto complejo para ilustrar el propósito de la herramienta.

../../_images/groups_group_editor_window.webp

Tiene tres columnas:

  1. Una lista de grupos utilizados por los nodos en la escena actual.

  2. Una lista de nodos que no forman parte del grupo seleccionado.

  3. Una lista de nodos en el grupo.

Los campos en la parte inferior le permiten agregar nuevos grupos o filtrar nodos en la segunda y tercera columna.

Nota

Cualquier nombre de nodo que esté desactivado significa que el nodo fue añadido al grupo en una escena diferente y no puedes editarlo aquí. Esto ocurre especialmente en instancias de escenas.

Usando código

También puedes gestionar grupos desde scripts. El siguiente código agrega el nodo al que adjuntas el script al grupo guards tan pronto como entra en el árbol de escena.

func _ready():
    add_to_group("guards")

Imagina que estás creando un juego de infiltración. Cuando un enemigo ve al jugador, quieres que todos los guardias y robots estén alerta.

En el ejemplo ficticio a continuación, usamos SceneTree.call_group() para alertar a todos los enemigos de que el jugador fue avistado.

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

El código anterior llama a la función enter_alert_mode en cada miembro del grupo guards.

Para obtener la lista completa de nodos en el grupo guards como un arreglo, puedes llamar a SceneTree.get_nodes_in_group():

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

La clase SceneTree proporciona muchos métodos útiles para interactuar con escenas, su jerarquía de nodos y grupos. Permite cambiar escenas o recargarlas fácilmente, salir del juego o pausar y despausarlo. Incluso viene con señales útiles.