Menu
CoddyTech

Afficher le score

Fait partie de la section Créer de vrais jeux du Journey Unity de Coddy. Leçon 2 sur 56.

Le text d’un texte est une chaîne, donc un nombre doit 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 plutôt que celle saisie dans l’Inspector. 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 Update() donnerait le même résultat, mais construirait une nouvelle chaîne 60 fois par seconde pour rien. L’ordre compte : appeler ShowWood() avant wood += 3 afficherait l’ancien compte, avec un appui de retard.

challenge icon

Défi

Facile

Le jardinier plante des arbres. Les flèches le déplacent et la touche Espace plante un jeune arbre tant qu’il reste des graines, comme le fait déjà Gardener.cs. Affiche les compteurs à l’écran ; la scène relie seedsText et treesText :

  • seedsText affiche les graines restantes, par exemple Seeds: 4, et treesText les arbres plantés, par exemple Trees: 1.
  • Les deux affichent les bonnes valeurs dès la première image et après chaque plantation. L’Inspector attribue 5 graines au jardinier, bien que les textes de la scène indiquent encore Seeds: 10 et Trees: ?.
  • Écris une méthode qui définit les deux textes, puis appelle-la partout où c’est nécessaire.

Appuie sur Play, plante jusqu’à épuisement des graines, puis appuie sur Check.

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
}
quiz iconTestez-vous

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