Tutoriel 7 : Scene Index, Invoke
Objectifs¶
Nous allons apprendre à transitionner entre deux scènes.
Niveau 1¶
Créez un premier niveau (assez grand pour que la caméra puisse dézoomer et bouger dans toutes les directions) avec des platformes qui entourent le monde (pour que le joueur ne puisse pas tomber en dehors du monde), des ennemis, de l’eau, des pics, des échelles. Prévoyez des endroits pour placer des pièces qui font gagner des points, des points de vies, et une sortie pour passer au niveau suivant dans le futur.
Level Exit¶
Créer un deuxième niveau (une autre scène) en dupliquant le niveau courant.
Ajoutez un objet vide Exit à votre premier niveau.
Créez deux objets enfants de Exit nommés Door et Door Top avec les sprites
tiles_43ettiles_44respectivement.Changez les positions de Door et Door Top à
(0,0,0)et(0,-1,0)respectivement.Ajoutez un Box Collider 2D en mode Trigger à Exit et placez-le visuellement sur Door.
Ajoutez une layer Interactables à Exit et pensez à modifier la matrice de collision pour que Exit puisse interagir avec Player seulement.
Créez un script
LevelExit.cset attachez-le à Exit.Dans
LevelExit.cs, nous allons importerusing UnityEngine.SceneManagement.Définissez une méthode
void OnTriggerEnter2D(Collider2D other).Dans
OnTriggerEnter2D, nous allons appeler une méthodeLoadNextScene()(à définir).Dans
void LoadNextScene(), récupérez lebuildIndexde la scène courante avecint currentSceneIndex = SceneManager.GetActiveScene().buildIndex. Puis, chargez la scène suivante avecSceneManager.LoadScene(currentSceneIndex + 1).Dans File > Build Profiles > Scene List, vous pouvez ajoutez le niveau deux en l’ouvrant et en cliquant sur Add Open Scenes. Vous pouvez voir le
buildIndexde chaque scène à droite.
Pour améliorer la transition entre les niveaux, nous allons ajouter un délai au lieu de lancer le prochain niveau instantanément.
Utilisez
Invokepour charger la scène suivante après un délaisceneLoadDelaymodifiable avec[SerializeField].