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 56.

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 Play de este menú, configurado 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, se encuentra en File > Build Profiles, en Scene List (en versiones anteriores, la ventana se llama Build Settings). El nombre debe ser exactamente el del archivo de la 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 empieza por Scene 'Forrest' couldn't be loaded y dice que la escena no se ha añadido a la compilación; el juego se queda en el menú.

El cambio no es instantáneo. Primero se ejecuta el resto del fotograma actual, así que las líneas posteriores a LoadScene siguen ejecutándose; al comienzo del fotograma siguiente, Unity destruye todos los objetos de la escena anterior y crea los de la nueva, cuyos scripts vuelven a iniciarse con Awake y Start.

challenge icon

Desafío

Fácil

Un centro con dos portales. Esta compilación tiene tres escenas: Hub (la primera), Desert y Glacier. En el centro, un portal lleva al desierto y otro al glaciar, y cada uno de esos lugares tiene un portal de vuelta al centro. Cada portal tiene el script Portal, y el Inspector establece su sceneName con el lugar al que lleva. Las flechas mueven al jugador (ya está listo).

Escribe Portal.cs: cuando el jugador (con la etiqueta Player) entra en un portal, carga la escena indicada en el sceneName de ese portal.

Pulsa Play, visita ambos lugares y después pulsa Check.

Pruébalo tú mismo

using UnityEngine;

public class Portal : MonoBehaviour
{
    public string sceneName;

    // cuando el jugador entre, carga la escena llamada sceneName
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Creación de juegos reales