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.
Défi
FacileLe 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 :
seedsTextaffiche les graines restantes, par exempleSeeds: 4, ettreesTextles arbres plantés, par exempleTrees: 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: 10etTrees: ?. - É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
}
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
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 niveau7Contrôle du temps
Mettre en pause avec timeScaleRalentiTemps non mis à l’échelleRécapitulatif : Bullet Time10Projet : jeu de plateforme en 3D
Le parcoursPlateformes mobiles2Boutons 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 banque