Godot 4.x GDScript Cheatsheet

GamedevArgentina.com - Hoja de trucos rápida de sintaxis GDScript

Comentarios

# esto es un comentario y es ignorado por Godot
# esto tambien

Variables

var vidas # declara la variable vidas sin tipo (tipado dinámico)
var vidas : int # declara la variable vidas como int (tipado estático)
var puntos = 0.0 # declara la variable puntos como float (tipado dinámico)
var puntos := 0.0 # declara la variable puntos como float (tipado estático)
var puntos : float = 0.0 # declara la variable puntos como float (tipado estático)
const VELOCIDAD = 100 # constante VELOCIDAD no puede cambiar el valor

Tipos de datos

int # números enteros 10
float # números con decimales 5.6
bool # booleano true (verdadero) o false (false)
String # cadena de caracteres "gamedevargentina.com"
Vector2 # 2 valores, normalmente coordenadas 2D (x, y) Vector2(5.0, 140.0)
Vector3 # 3 valores, normalmente coordenadas 3D (x, y, z) Vector2(5.0, 10.0, 3.5)
Array # lista
Dictionary # diccionario "clave" : "valor"

Listas (Arrays) y Diccionarios

var lista: Array = [1, 2, "Hola", true] # lista. puede tener valores de distinto tipo
var enemigos: Dictionary = {"ogro": "Igor", "heroe": "Cronos"} # pares clave : valor

Operadores aritméticos

suma: 5 + 3
resta: 5 - 3
multiplicación: 3 * 3
división: 9 / 3
resto: 5 % 2
potencia: 3 ** 3

Operadores de comparación

igual:  5 == 3 # false
no igual:  != 3 # true
menor que: 3 < 5 # true
menor o igual: 3 <= 5 # true
mayor que: 3 > 5 # false
mayor o igual: 3 >= 5 # false

Operadores lógicos

a and b # y lógico
a or b # o lógico
not a # invierte el valor
                        

Asignación

nombre = "Ale"# variable = valor
puntos += 1 # puntos = puntos + 1
vidas -= 1# vidas = vidas - 1
puntos *= 2 # puntos = puntos * 2
vidas /= 2 # vidas = vidas / 2
                        

Conversión de tipos (cast)

str(5) # convierte número a String
int("5") # convierte String a entero
float(5) # convierte número entero a número decimal
                

Condicionales (if, elif, else)

if numero == 5:
    print("cinco")
elif numero == 6:
    print("seis")
else:
    print("el numero no es ni cinco ni seis")

match nombre:
    "Ale":
        print("Hola Alejandro")
    "Mari":
        print("Hola María!")
    _:
        print("No se quien sos")

Funciones

print("Hola") # función print muestra por consola

func saluda(): # función sin parámetros
    print("Hola")

func saluda(nombre): # función con parámetro
    print("Hola", nombre)

saluda("Ale") # llama a la función

func suma(a, b): # función con 2 parámetros
    return a + b

print(suma(5, 6)) # muestra 11

var numero_aleatorio = randi_range(1, 5)
print(len("Ale")) # devuelve 3
print("Ale".to_upper()) # ALE
get_parent() # accede al nodo padre
get_node("nodo") # accede al nodo hijo

Funciones internas

func _ready(): # se ejecuta una vez al iniciar
    pass

func _process(delta): # se ejecuta en cada cuadro

func _physics_process(delta): # 60 veces por segundo (física)

func _input(event): # cuando hay evento de entrada

Bucles

for contador in range(5):
    print(contador) # 0, 1, 2, 3, 4

for item in lista:
    print(item) # cada item del array

var contador = 0
while contador < 5:
    print(contador) # 0, 1, 2, 3, 4
    contador += 1

Señales

signal destruido # crea una señal
destruido.emit() # emite la señal
destruido.connect(al_destruir) # conecta la señal

Teclas pulsadas

if Input.is_action_pressed("ui_left"):
    position.x -= 1 # mover a la izquierda

if Input.is_action_just_pressed("ui_accept"):
    position.y -= 100 # mover hacia arriba

if Input.is_action_just_released("ui_down"):
    # tecla dejó de ser pulsada