Menu
CoddyTech

Charger une scène

Fait partie de la section Créer de vrais jeux du Journey Unity de Coddy. Leçon 17 sur 56.

Un jeu Unity est divisé en scènes : un menu, chaque niveau, le générique. Chaque scène est un fichier qui lui est propre, avec ses propres objets, et un script permet de passer à une autre avec SceneManager.LoadScene, depuis l’espace de noms UnityEngine.SceneManagement. Le bouton Play de ce menu, relié dans l’Inspector, ouvre le niveau Forest :

using UnityEngine;
using UnityEngine.SceneManagement;

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

Unity ne peut charger que les scènes qui figurent dans la liste des scènes de la build : dans Unity 6, celle-ci se trouve sous File > Build Profiles, dans Scene List (dans les anciennes versions, cette fenêtre s’appelle Build Settings). Le nom doit correspondre exactement au nom du fichier de scène. Si une scène est absente de la liste ou si le nom comporte une faute, comme "Forrest", rien ne se charge et la Console affiche une erreur qui commence par Scene 'Forrest' couldn't be loaded et indique que la scène n’a pas été ajoutée à la build ; le jeu reste alors dans le menu.

Le changement n’est pas instantané. Le reste de la frame en cours s’exécute d’abord, donc les lignes qui suivent LoadScene s’exécutent quand même ; au début de la frame suivante, Unity détruit tous les objets de l’ancienne scène et construit la nouvelle, dont les scripts redémarrent avec Awake et Start.

challenge icon

Défi

Facile

Un hub avec deux portails. Cette version comporte trois scènes : Hub (la première), Desert et Glacier. Dans le hub, un portail mène au désert et l’autre au glacier, et chacun de ces lieux possède un portail de retour vers le hub. Chaque portail possède le script Portal, et l’Inspector définit sceneName sur la scène vers laquelle il mène. Les flèches permettent de déplacer le Player (prêt).

Écris Portal.cs : lorsque le Player (portant le tag Player) entre dans un portail, charge la scène indiquée par le sceneName de ce portail.

Appuie sur Jouer, visite les deux lieux, puis clique sur Vérifier.

Essayez vous-même

using UnityEngine;

public class Portal : MonoBehaviour
{
    public string sceneName;

    // quand le joueur entre, charge la scène nommée sceneName
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Créer de vrais jeux