Godot. Función call_group

Enviado por tech4life el

Cuando estamos desarrollando nuestro juego, a veces podemos querer ejecutar una misma acción para una serie de elementos u objetos. 

Por ejemplo, se ha acabado un nível y queremos eliminar todos los objetos enemigos, o bien hemos acabado un puzzle y queremos ocultar todos los botones, etc.

Para hacer esto podemos utilizar el sistema de grupos de Godot. 

Para ello primero tenemos que ir a cada objeto y añadirle el grupo, para ello iremos al dock donde esta el inspector y nos moveremos a la pestaña de Node, donde encontraremos la subpestaña de Groups

Allí simplemente ponemos un nombre en el espacio destinado a ello y le damos al botón Add. 

Poniendo el mismo nombre a todos los objetos que queramos haremos que pertenezcan al mismo grupo.

Luego, desde un script, en GDScript podemos invocar a este grupo y ejecutar la misma función para todos ellos. Veamos un ejemplo

get_tree().call_group("_g_response", "queue_free")

En este ejemplo, hemos invocado de todo el árbol de la escena (get_tree), hemos indicado con la función call_group que queremos ejecutar una función para todos los miembros de un grupo. El primer parametro corresponde con el nombre del grupo, y el segundo con la función que queremos ejecutar. 

Podriamos pasarle parametros a la función que queremos ejecutar, pasandolos en la función call_group como parametros extra.

En nuestro ejemplo, estamos llamando a la función queue_free que eliminará los objetos, pero podriamos llamar a la función hide para ocultarlos o show para mostrarlos por ejemplo.

Si los objetos que están en el grupo no tienen la función simplemente los salta en la ejecución y no hace nada con ellos.

Esta función es muy útil para poder ejecutar funciones sobre grupos de elementos.

Nivel