DEYBIS A. MELENDEZ VARGAS

CLASS_NAME EN GODOT ENGINE

25 Jul 2020 por Deybis Melendez


Desde que uso Godot Engine nunca había usado el class_name de Godot, ya que nunca me encontré con un problema donde lo requiera, pero ¿Por qué?, pues en Godot las escenas y scripts son clases, siempre lo veía así.
Hoy me encontré un post en un foro donde explicaban cómo usar class_name, entonces me quedé como el meme de Homero:

Es que usar class_name es bastante sencillo, tan sencillo que vale la pena usarlo.

Veamos en algunos casos no lo veo tan conveniente, por ejemplo, al hacer un Player el problema es que Player tiene Sprites, AnimationPlayer, CollisionShape, etc. Muchos nodos, es mucho mas tedioso programar todo desde código teniendo el editor para hacerlo mas sencillo.

En cambio, hay ocasiones donde solo necesitamos un nodo, añadirle alguna configuración personalizada o un par de métodos nuevos, ahí es donde veo mas útil class_name.

Y es que para hacer lo anterior dicho sin class_name, tenemos que usar el load() y cargar la escena, luego instanciarla, pero la escena debemos cargarla en una variable.

Pues bien, con class_name todo se simplifica, simplemente creamos un script, no la escena, y debajo del extends (segunda línea), añadimos:

class_name NombreClase

Listo! Ahora podemos desde cualquier escena ejecutar:

NombreClase.new()

Lo que genera una instancia de la clase, y la podremos añadir con el add_child(), con class_name no hay necesidad de cargar el nodo con load() y podemos instanciar desde cualquier escena.

Por si fuera poco, una vez que añades class_name aparecerá en el editor al añadir nodo nuevo.

Un ejemplo aplicando la clase Pencil, que extiende de Line2D en mi proyecto Draw it.
Como dije antes, solo necesitas el script para crear la clase, no necesitas hacer una escena, lo que la hace mucho mas cómodo de trabajar ya que no tendrás 2 archivos separados.