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.
Défi
FacileUn 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
}
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
1Texte à l’écran
Canvas et texteAfficher le scoreFormater les nombresUn compte à reboursRécapitulatif : compteur de vitesse4Scènes et niveaux
Charger une scèneRedémarrer le niveauNiveau suivantConserver entre les scènesRécapitulatif : sélection du niveau7Contrôle du temps
Mettre en pause avec timeScaleRalentiTemps non mis à l’échelleRécapitulatif : Bullet Time10Projet : jeu de plateforme en 3D
Le parcoursPlateformes mobiles2Boutons et écrans
Boutons et onClickLambdasRelier les éléments dans l’InspectorActiver et désactiver les panneauxBarres de santéRécapitulatif : boutique d’améliorations5Sauvegarder avec PlayerPrefs
Enregistrer un nombreCharger avec une valeur par défautMeilleur scoreEnregistrer les paramètresRécapitulatif : les pièces à la banque