Afficher le score
Fait partie de la section Créer de vrais jeux du Journey Unity de Coddy. Leçon 2 sur 60.
Le text d’un texte est une chaîne de caractères : un nombre doit donc devenir du texte avant d’être affiché. Le concaténer à une chaîne avec + fait cela : "Wood: " + wood donne Wood: 12 lorsque wood vaut 12, et wood.ToString() donne 12. Le int seul ne convient pas : woodText.text = wood; échoue avec CS0029, Impossible de convertir implicitement le type 'int' en 'string'.
Le nombre est stocké dans un champ int, et le texte ne fait que l’afficher. Une méthode réécrit le texte à partir du champ ; chaque modification du nombre l’appelle, tout comme Start(), afin que la première image affiche la valeur réelle au lieu de celle saisie dans l’inspecteur. Ici, la barre d’espace coupe 3 bûches :
public TMP_Text woodText;
private int wood;
void Start()
{
ShowWood();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
wood += 3;
ShowWood();
}
}
void ShowWood()
{
woodText.text = "Wood: " + wood;
}Le texte ne change que lorsque wood change. Le réécrire à chaque appel de Update() donnerait le même résultat, mais créerait inutilement une nouvelle chaîne 60 fois par seconde. L’ordre est important : appeler ShowWood() avant wood += 3 afficherait l’ancien décompte, avec un appui de retard.
Défi
FacileAffiche les graines et les arbres du jardinier à l’écran.
- Dans
Gardener.cs, écrisvoid ShowCounts()pour définirseedsText.textsur"Seeds: " + seedsettreesText.textsur"Trees: " + trees. - Appelle-la dans un nouveau
Start(), puis dans leifde plantation aprèstrees++;.
Appuie sur « Jouer » : les textes indiquent Seeds: 5 et Trees: 0, et changent à chaque jeune pousse. Puis clique sur « Vérifier ».
Essayez vous-même
using UnityEngine;
using TMPro;
public class Gardener : MonoBehaviour
{
public float speed = 4f;
public int seeds = 10;
public GameObject saplingPrefab;
public TMP_Text seedsText;
public TMP_Text treesText;
private int trees;
void Update()
{
float move = Input.GetAxisRaw("Horizontal");
transform.Translate(move * speed * Time.deltaTime, 0f, 0f);
if (Input.GetKeyDown(KeyCode.Space) && seeds > 0)
{
Vector3 spot = new Vector3(transform.position.x, 0.5f, 1.5f);
Instantiate(saplingPrefab, spot, Quaternion.identity);
seeds--;
trees++;
}
}
// Affiche Seeds: et Trees: dans les deux champs de texte dès la première image
}
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 niveau2Boutons 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 banqueEntraînez-vous par vous-même : Playground Unity