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