Tutoriel 9 : TextMeshPro, Canvas
Objectifs¶
Nous allons apprendre à :
- créer des menus et des boutons cliquables avec TextMeshPro et des canvas et
- créer un objet Scene Persist qui garde les progrès du joueur à l’intérieur d’une scène.
TextMeshPro et Canvas¶
- Suivez le tutoriel suivant pour créer une nouvelle scène qui sera le menu de démarrage du jeu. Le bouton OPTIONS pourra être remplacé par TUTORIAL qui affichera les contrôles du jeu.
- Suivez le tutoriel suivant pour créer un Pause Menu dans vos niveaux. Il suffit d’avoir un bouton RESUME pour reprendre le jeu.
Lives et Score¶
Créez un Canvas simple, comme enfant de Game Session pour afficher les points de vie et le score (juste des valeurs arbitraires pour le moment) de Player sur l’écran. Les textes de points de vie et de score seront des enfants de Canvas.
Dans Event System (créé automatiquement quand vous avez créé un canvas), cliquez sur Replace with InputSystemUIInputModule.
Dans
GameSession.cs, importezusing TMPro, ajoutez la variable[SerializeField] TextMeshProUGUI livesTextpuis récupérez l’objet texte du canvas qui affiche les points de vie.Dans la méthode
StartdeGameSession.cs, affichez les points de vie de Player aveclivesText.text = "Lives: " + playerLives.ToString().Affichez également la vie du joueur dans
TakeLife.Implémentez la méthode
public void AddToLife()qui augmente playerLives de 1 et qui l’affiche.Faites de même pour le score.
Ajoutez des tags différents aux pièces et aux champignons.
Dans
Pickup.cs, selon le tag de l’objet courant, ajoutez des points de vie ou du score avecFindObjectOfType<GameSession>().AddToLife()ouAddToScore(). Dans Unity 6, la syntaxe estFindAnyObjectByType<GameSession>().
Scene Persist¶
Nous souhaitons que les progrès réalisés par un joueur ne soient pas perdus lorsque la scène redémarre (par exemple, les pièces ramassées et les ennemis tués restent détruits).
Créez un objet vide nommé Scene Persist avec un script
ScenePersist.cs.Dans
ScenePersist.cs, implémentezAwakede la même façon que vous avez implémentéAwakedansGameSession.cs.Dans
ScenePersist.cs, implémentez la méthodepublic void ResetScenePersist()qui détruit l’objet.Dans
GameSession.cs>ResetGameSessions, ajoutezFindObjectOfType<ScenePersist>().ResetScenePersist()pour détruire Scene Persist quand le jeu recommence. Dans Unity 6, la syntaxe estFindAnyObjectByType<ScenePersist>().Mettez tous les objets de la scène qui peuvent avoir le comportement mentionné ci-dessus comme enfant de Scene Persist.
Victory et Game Over¶
Créez une scène simple pour le Game Over avec un bouton pour revenir au menu de démarrage.
Modifiez la méthode
ResetGameSessionsdeGameSession.cspour prendre en argument unstringqui sera le nom d’une scène.Appelez la scène correspondant au Game Over dans
ProcessPlayerDeath.Créez une autre scène simple pour la victoire avec le score courant du joueur, un bouton qui appelle
ResetGameSessionspour revenir au menu de démarrage.Pour l’exit du dernier niveau de votre jeu, faites en sorte que l’écran de victoire soit la prochaine scène appelée.
Vous pouvez maintenant faire un commit
fin du tutoriel 9.