Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Tutoriel 7 : Scene Index, Invoke

IUT d'Orsay, Université Paris-Saclay

Objectifs

Nous allons apprendre à transitionner entre deux scènes.

Niveau 1

  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

  1. Créer un deuxième niveau (une autre scène) en dupliquant le niveau courant.

  2. Ajoutez un objet vide Exit à votre premier niveau.

  3. Créez deux objets enfants de Exit nommés Door et Door Top avec les sprites tiles_43 et tiles_44 respectivement.

  4. Changez les positions de Door et Door Top à (0,0,0) et (0,-1,0) respectivement.

  5. Ajoutez un Box Collider 2D en mode Trigger à Exit et placez-le visuellement sur Door.

  6. Ajoutez une layer Interactables à Exit et pensez à modifier la matrice de collision pour que Exit puisse interagir avec Player seulement.

  7. Créez un script LevelExit.cs et attachez-le à Exit.

  8. Dans LevelExit.cs, nous allons importer using UnityEngine.SceneManagement.

  9. Définissez une méthode void OnTriggerEnter2D(Collider2D other).

  10. Dans OnTriggerEnter2D, nous allons appeler une méthode LoadNextScene() (à définir).

  11. Dans void LoadNextScene(), récupérez le buildIndex de la scène courante avec int currentSceneIndex = SceneManager.GetActiveScene().buildIndex. Puis, chargez la scène suivante avec SceneManager.LoadScene(currentSceneIndex + 1).

  12. 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 buildIndex de 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.

  1. Utilisez Invoke pour charger la scène suivante après un délai sceneLoadDelay modifiable avec [SerializeField].