SceneManager es un singleton autoload que envuelve el método nativo de Godot change_scene_to_packed detrás de una API basada en nombres. En lugar de dispersar llamadas a preload y referencias a escenas empaquetadas en tus scripts, invocas un único método con un nombre de tipo cadena y SceneManager se encarga del resto.
SceneManagerestá registrado como un autoload en la configuración del proyecto, lo que significa que está disponible desde cualquier script del juego sin necesidad de importar o buscar una referencia de nodo.
Resumen de la clase
Al iniciar, SceneManager carga un recurso Scenes (scenes.tres) desde uid://bn7v8txng2pda. Este recurso asocia nombres en formato de cadena legibles para humanos con instancias de PackedScene.
Inicialización
func _ready():
_scenes.expected_type = TYPE_OBJECT
_scenes.check_item_types()
_ready() valida que cada entrada del recurso Scenes sea un Object adecuado (una PackedScene cargada). Si alguna entrada presenta un tipo erróneo, check_item_types() registra un error en el arranque del juego.
La validación en
_ready()detecta errores de configuración de forma temprana. Si añades una nueva escena ascenes.trespero dejas la entrada vacía por error, verás el error en el panel de salida al iniciar el juego.
Referencia de la API
change_to_scene(scene_name: String) -> void
Realiza la transición a la escena identificada por scene_name, reemplazando la raíz del árbol de escenas actual.
- scene_name (
String): El nombre de la escena tal como está registrada enscenes.tres. Es una clave de cadena de texto sensible a mayúsculas y minúsculas.
Ejemplos de uso
Ir a la escena de batalla
func _on_play_button_pressed() -> void:
SceneManager.change_to_scene("battle")
Volver al menú principal
func _on_quit_pressed() -> void:
SceneManager.change_to_scene("main_menu")
Combinado con FlagsManager
func _on_start_pressed() -> void:
if FlagsManager.get_flag("tutorial_completed"):
SceneManager.change_to_scene("battle")
else:
SceneManager.change_to_scene("tutorial")
El recurso Scenes
Todos los nombres de escenas se definen en scenes.tres. Puedes ver y editar este archivo en el Inspector de Godot abriendo el recurso en el panel del Sistema de Archivos.
Los nombres de las escenas en
scenes.tresson la única fuente de verdad para los argumentos válidos dechange_to_scene.
Añadir una nueva escena
- Crea y guarda tu escena: Crea tu nueva escena en Godot y guárdala (por ejemplo,
res://scenes/credits.tscn). - Abre scenes.tres en el Inspector: En el panel del Sistema de Archivos, busca
scenes.tresy ábrelo. - Añade una nueva entrada: Añade un nuevo par clave-valor (nombre descriptivo → PackedScene).
- Verifica al iniciar: Ejecuta el proyecto para confirmar que no hay errores de registro.
- Llama a change_to_scene:
SceneManager.change_to_scene("credits").