Menu
CoddyTech

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.

challenge icon

Défi

Facile

Affiche les graines et les arbres du jardinier à l’écran.

  1. Dans Gardener.cs, écris void ShowCounts() pour définir seedsText.text sur "Seeds: " + seeds et treesText.text sur "Trees: " + trees.
  2. Appelle-la dans un nouveau Start(), puis dans le if de plantation après trees++;.

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

Entraînez-vous par vous-même : Playground Unity