Skip to article frontmatterSkip to article content

Tutoriel 9 : TextMeshPro, Canvas

IUT d'Orsay, Université Paris-Saclay

Objectifs

Nous allons apprendre à :

TextMeshPro et Canvas

  1. 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.
  1. 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

  1. 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.

  2. Dans Event System (créé automatiquement quand vous avez créé un canvas), cliquez sur Replace with InputSystemUIInputModule.

  3. Dans GameSession.cs, importez using TMPro, ajoutez la variable [SerializeField] TextMeshProUGUI livesText puis récupérez l’objet texte du canvas qui affiche les points de vie.

  4. Dans la méthode Start de GameSession.cs, affichez les points de vie de Player avec livesText.text = "Lives: " + playerLives.ToString().

  5. Affichez également la vie du joueur dans TakeLife.

  6. Implémentez la méthode public void AddToLife() qui augmente playerLives de 1 et qui l’affiche.

  7. Faites de même pour le score.

  8. Ajoutez des tags différents aux pièces et aux champignons.

  9. Dans Pickup.cs, selon le tag de l’objet courant, ajoutez des points de vie ou du score avec FindObjectOfType<GameSession>().AddToLife() ou AddToScore(). Dans Unity 6, la syntaxe est FindAnyObjectByType<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).

  1. Créez un objet vide nommé Scene Persist avec un script ScenePersist.cs.

  2. Dans ScenePersist.cs, implémentez Awake de la même façon que vous avez implémenté Awake dans GameSession.cs.

  3. Dans ScenePersist.cs, implémentez la méthode public void ResetScenePersist() qui détruit l’objet.

  4. Dans GameSession.cs > ResetGameSessions, ajoutez FindObjectOfType<ScenePersist>().ResetScenePersist() pour détruire Scene Persist quand le jeu recommence. Dans Unity 6, la syntaxe est FindAnyObjectByType<ScenePersist>().

  5. 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

  1. Créez une scène simple pour le Game Over avec un bouton pour revenir au menu de démarrage.

  2. Modifiez la méthode ResetGameSessions de GameSession.cs pour prendre en argument un string qui sera le nom d’une scène.

  3. Appelez la scène correspondant au Game Over dans ProcessPlayerDeath.

  4. Créez une autre scène simple pour la victoire avec le score courant du joueur, un bouton qui appelle ResetGameSessions pour revenir au menu de démarrage.

  5. Pour l’exit du dernier niveau de votre jeu, faites en sorte que l’écran de victoire soit la prochaine scène appelée.

  6. Vous pouvez maintenant faire un commit fin du tutoriel 9.