Cómo usar el Singleton (AutoLoad) en Godot

Mientras aumenta la complejidad en un proyecto, la necesidad de manejar datos persistentes  (variables del jugador, enemigos, funciones) se convierte en algo insostenible para la jerarquía de escenas. Podemos tener en cada nivel una escena que sostenga las variables de otra, pero al hacer funciones con un elevado requerimiento de memoria, se puede notar una perdida considerable.

Por esta razón, aunque Godot no admite las «variables globales», tenemos la opción de cargar scripts durante todo el proceso de nuestro juego. Dentro del script, conocido como Singleton, podemos guardar toda la información que necesitemos como persistente, ya que al ser ejecutado todo el tiempo, no importa que cambiemos de escena. El valor se mantiene en todas las escenas que formen parte del proyecto.


Poner script en el AutoLoad

Sólo podemos cargar scripts que hereden de un Node «extends Node». Vamos a dirigirnos a la pestaña de «Proyecto» y después a los ajustes:

Ahora buscamos la pestaña de AutoLoad:

Indicamos la dirección del script que queremos:

Por defecto se coloca el nombre del script, podemos cambiarlo por uno que sea de nuestro agrado. Ese nombre lo usaremos cuando estemos accediendo a los valores del Singleton desde una escena. Hay que hacer clic en el botón «Add».


Obtener valores de un script en AutoLoad

Dentro del Singleton, tengo lo siguiente:

extends Node

var puntos = 0
var vidas = 10
var nombre = "César"
var apellido = "León"

Para obtener las variables desde otra escena, escribimos el nombre del script y con un «.» la variable que queremos usar:

extends KinematicBody2D

var mi_vida = variables_globales.vidas
var mis_puntos = variables_globales.puntos

Por ahora esta es una explicación básica sobre el uso del Singleton en Godot.  Los próximos tutoriales explicaran formas para implementar esta característica de Godot en funcionalidades mas complejas, por ejemplo: Inventario.