Menu
CoddyTech

Niveau suivant

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

Chaque scène de la liste des scènes de la compilation possède un numéro, son index de compilation : 0 pour la première, 1 pour la suivante, et ainsi de suite. LoadScene prend ce numéro ainsi qu’un nom, et SceneManager.sceneCountInBuildSettings indique combien de scènes contient la liste. Comme les niveaux sont dans l’ordre de la liste, le niveau suivant correspond à l’index de la scène active plus 1. Cette sortie le charge, puis s’arrête après le dernier niveau :

void OnTriggerEnter(Collider other)
{
    if (!other.CompareTag("Player")) return;
    int next = SceneManager.GetActiveScene().buildIndex + 1;
    if (next < SceneManager.sceneCountInBuildSettings)
    {
        SceneManager.LoadScene(next);
    }
    else
    {
        Debug.Log("You finished the game!");
    }
}

Avec quatre scènes, les index vont de 0 à 3 et sceneCountInBuildSettings vaut 4. Ainsi, au dernier niveau, next vaut 4, soit une valeur au-delà de la fin. C’est pourquoi le test est next < sceneCountInBuildSettings : LoadScene(4) ne chargerait rien et consignerait l’erreur de Unity Cannot load scene: Invalid scene name (empty string) and invalid build index 4.

Un seul script de sortie sert désormais pour tous les niveaux, et aucun ne nomme de scène. Pour ajouter un niveau, tu ajoutes sa scène à la liste ; pour modifier l’ordre, tu fais glisser les scènes dans la liste.

challenge icon

Défi

Facile

La liste de build contient quatre scènes : Menu (index 0), puis Level1, Level2 et Level3. Le bouton Play du Menu ouvre Level1, et les flèches permettent de déplacer le Player (les deux sont prêts). Chaque niveau possède un objectif doré avec le script Goal. Écris-le sans nommer de scène :

  • Dans Start, affiche le numéro de ce niveau et le nombre de niveaux dans levelText, sous la forme Level 2 of 3. Le Menu n’est pas un niveau.
  • Lorsque le Player (avec le tag Player) atteint l’objectif, charge le niveau suivant de la liste. Après le dernier niveau, retourne au Menu.

Appuie sur Play, joue les trois niveaux, puis appuie sur Check.

Essayez vous-même

using UnityEngine;
using UnityEngine.SceneManagement;
using TMPro;

public class Goal : MonoBehaviour
{
    public TMP_Text levelText;

    void Start()
    {
        // afficher "Level 2 of 3" : le numéro de ce niveau et le nombre total de niveaux
    }

    void OnTriggerEnter(Collider other)
    {
        // le joueur a atteint l’objectif : charger le niveau suivant, ou le menu après le dernier niveau
    }
}
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