miércoles, 29 de julio de 2026

Cambiar de escena por tiempo en Godot 4.7, perfectamentente sin fallos incluso en HTML;

 extends Node3D


## Escena a la que se cambiará tras finalizar el tiempo

@export var siguiente_escena: PackedScene


## Tiempo de espera en segundos antes de cambiar de escena

@export var tiempo_espera: float = 5.0


func _ready() -> void:

var timer := get_tree().create_timer(tiempo_espera)

timer.timeout.connect(_cambiar_escena_directa)


func _cambiar_escena_directa() -> void:

if not siguiente_escena:

push_warning("No se ha asignado ninguna escena en el Inspector.")

return


# 1. Guardamos una referencia a la escena actual (la que queremos borrar)

var escena_actual := get_tree().current_scene

# 2. Instanciamos la nueva escena

var nueva_instancia := siguiente_escena.instantiate()

# 3. Añadimos la nueva escena al nodo raíz del proyecto

get_tree().root.add_child(nueva_instancia)

# 4. Establecemos la nueva escena como la escena activa

get_tree().current_scene = nueva_instancia

# 5. Eliminamos la escena vieja

if escena_actual:

escena_actual.queue_free()


-----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------------

Explicacion: Me encuentro trabajando un videojuego en que el cambio de escenas es constante y muy importante, y lo quiero en html y con Godot 4.7   me encontraba el problema que la transicion de una escena a otra no era limpia al usar HTML, salia una pantalla de color gris a intermedio de cada escena y este GDScript consultado ala IA me lo a solucionado......la escena y el tiempo los arrastro y marco en el inspector.

No hay comentarios:

Publicar un comentario