Menu
CoddyTech

Cargar una escena

Parte de la sección Creación de juegos reales del Journey de Unity de Coddy. Lección 17 de 60.

Un juego de Unity se divide en escenas: un menú, cada nivel y los créditos. Cada escena es un archivo independiente con sus propios objetos, y un script cambia a otra mediante SceneManager.LoadScene, del espacio de nombres UnityEngine.SceneManagement. El botón «Jugar» de este menú, conectado en el Inspector, abre el nivel Forest:

using UnityEngine;
using UnityEngine.SceneManagement;

public class MainMenu : MonoBehaviour
{
    public void Play()
    {
        SceneManager.LoadScene("Forest");
    }
}

Unity solo puede cargar escenas que estén en la lista de escenas de la compilación: en Unity 6, esta se encuentra en File > Build Profiles, en Scene List (en versiones anteriores, la ventana se llama Build Settings). El nombre debe coincidir exactamente con el del archivo de escena. Si falta una escena en la lista o hay un error tipográfico, como "Forrest", no se carga nada y la consola muestra un error que comienza con Scene 'Forrest' couldn't be loaded y dice que la escena no se ha añadido a la compilación; el juego permanece en el menú.

El cambio no es instantáneo. Primero se ejecuta el resto del fotograma actual, así que las líneas que vienen después de LoadScene también se ejecutan; al comienzo del siguiente fotograma, Unity destruye todos los objetos de la escena anterior y crea los de la nueva, cuyos scripts vuelven a ejecutarse desde Awake y Start.

challenge icon

Desafío

Fácil

Haz que cada portal cargue la escena que indica su sceneName.

  1. Al principio de Portal.cs, añade using UnityEngine.SceneManagement;.
  2. Escribe void OnTriggerEnter(Collider other): cuando se cumpla other.CompareTag("Player"), llama a SceneManager.LoadScene(sceneName);.

Pulsa «Jugar» y entra en cada portal: Desert, Hub y Glacier se cargan en ese orden. Después, pulsa «Comprobar».

Pruébalo tú mismo

using UnityEngine;

public class Portal : MonoBehaviour
{
    public string sceneName;

    // cuando el jugador entre, carga la escena llamada sceneName
}

Todas las lecciones de Creación de juegos reales

Practica por tu cuenta: Playground de Unity