GDScript 3.6 — Guía de Referencia Rápida

Aprende por módulos interactivos • Haz clic en cada sección

1. Variables y Tipado Estático
📌 Recomendación: Utilizar el tipado estático (: tipo) facilita el autocompletado del editor de Godot y previene errores sintácticos.
⚠️ Regla de Godot 3.6: Las constantes (const) deben ser declaradas a nivel raíz de la clase/script. Declarar una constante dentro de una función como _ready() provocará un error de sintaxis.
extends Node2D

# Constantes (Valores inmutables) -> DEBEN ir a nivel de clase
const GRAVEDAD: float = 9.8

# Declaración dinámica / Inferencia
var salud = 100
var nombre = "Heroe"

# Tipado Estático (Recomendado)
var velocidad: float = 250.5
var esta_vivo: bool = true
2. Exportación de Variables (Inspector)
Uso Práctico Modifica parámetros directamente desde la interfaz gráfica del Inspector de Godot utilizando la palabra clave export.
💡 Sintaxis Godot 3.6: Se usa export(tipo) var nombre. En Godot 3.x no se combina export var con tipado estático posterior (: int), ni se usa la sintaxis con arroba (@export de Godot 4).
# Exportar entero explícito en Godot 3.6
export(int) var vida_maxima = 100

# Exportar con rango limitado (Slider gráfico)
export(int, 1, 10) var nivel_dificultad = 1
export(float, 0.0, 1.0, 0.1) var volumen = 0.8

# Exportar lista desplegable de opciones
export(String, "Espada", "Arco", "Magia") var arma_equipada = "Espada"

# Exportar referencias a escenas o recursos
export(PackedScene) var escena_enemigo
3. Condicionales (Toma de Decisiones)
⚠️ Nota Sintáctica: GDScript utiliza indentación/sangría obligatoria mediante tabuladores para definir los bloques de código.
func revisar_estado():
    if salud > 50:
        print("Estado: Excelente")
    elif salud > 0:
        print("Estado: Herido")
    else:
        print("Estado: Game Over")

    # Evaluación lógica múltiple
    if esta_vivo and salud == 100:
        print("Escudo activo")
4. Arreglos (Arrays)
📦 Permiten almacenar colecciones de datos. El primer elemento siempre inicia en el índice 0.
var inventario: Array = ["Poción", "Llave", "Moneda"]

func gestionar_inventario():
    # Agregar elemento al final
    inventario.append("Escudo")
    
    # Acceder al primer elemento ("Poción")
    var item = inventario[0]
    
    # Remover un elemento específico
    inventario.erase("Moneda")
    
    # Obtener cantidad total de elementos
    print("Total items: " + str(inventario.size()))
5. Bucles y Repeticiones
🔄 Estructuras for para recorridos secuenciales sobre rangos o arreglos, y while para bucles bajo condición.
func probar_bucles():
    # Bucle con rango numérico (0 al 4)
    for i in range(5):
        print("Paso número: ", i)

    # Recorrido de elementos en un Arreglo
    var lista = ["A", "B", "C"]
    for elemento in lista:
        print("Item: ", elemento)

    # Bucle condicional
    var contador = 3
    while contador > 0:
        contador -= 1
6. Funciones y Métodos Integrados
⚙️ _ready() se invoca una sola vez cuando el nodo entra al árbol de la escena, mientras que _process() ejecuta su lógica cíclicamente en cada fotograma/frame.
# Ejecución inicial al cargar el nodo
func _ready():
    var resultado = sumar(10, 20)
    print("Suma: ", resultado)

# Ejecución continua por fotograma (delta = tiempo transcurrido)
func _process(delta: float):
    # Rotación constante independiente del framerate
    rotation += 1.0 * delta

# Función con parámetros y valor de retorno definido
func sumar(a: int, b: int) -> int:
    return a + b