Menu
CoddyTech

Formater les nombres

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

Un nombre concaténé à une chaîne s’affiche comme C# l’écrit : un chronomètre affiche 12.34567, et un float égal à 2 affiche 2, sans aucune décimale. Une chaîne de format dans ToString() détermine plutôt son apparence. Chaque 0 qu’elle contient représente un chiffre qui est toujours affiché : 7.ToString("000") donne 007, et 41.27f.ToString("0.0") donne 41.3, arrondi à une décimale. Dans l’interpolation de chaînes, le même format vient après deux-points : $"{coins:000}", $"{topSpeed:0.0} m/s".

Les temps sont plus faciles à lire en minutes et secondes. Convertis d’abord le temps en int, ce qui supprime la fraction ; ensuite, la division entière par 60 donne le nombre de minutes et % 60 le nombre de secondes restantes. Un tour de 83.46 secondes :

float lapTime = 83.46f;
int total = (int)lapTime;      // 83
int minutes = total / 60;      // 1
int seconds = total % 60;      // 23
lapText.text = $"Lap: {minutes}:{seconds:00}";   // Tour : 1:23

00 permet d’afficher deux chiffres : sans lui, un tour de 64 secondes s’afficherait sous la forme 1:4 au lieu de 1:04. Et comme (int) supprime la fraction au lieu d’arrondir, 59.7 secondes s’affichent sous la forme 0:59 ; l’arrondi afficherait momentanément 0:60.

challenge icon

Défi

Facile

Le Scoreboard.cs de l’arcade affiche ses nombres sans formatage. La barre d’espace rapporte 100 points multipliés par le combo et augmente le combo de 0.5, et playTime compte les secondes écoulées (l’Inspector le règle à 47.5 au démarrage). Gardez le comptage tel quel et modifiez la façon dont les trois textes sont écrits :

  • scoreText : le score sur six chiffres, comme Score: 000450.
  • comboText : le combo avec une décimale, comme Combo: x2.5, et Combo: x1.0 au démarrage.
  • timeText : les minutes et les secondes entières, comme Time: 2:07. Les secondes ont toujours deux chiffres et ne sont jamais arrondies à la hausse.

Appuyez sur Jouer, marquez quelques points, puis cliquez sur Vérifier.

Essayez vous-même

using UnityEngine;
using TMPro;

public class Scoreboard : MonoBehaviour
{
    public TMP_Text scoreText;
    public TMP_Text comboText;
    public TMP_Text timeText;
    public int score;
    public float combo = 1f;
    public float playTime;

    void Update()
    {
        playTime += Time.deltaTime;
        if (Input.GetKeyDown(KeyCode.Space))
        {
            score += (int)(100 * combo);
            combo += 0.5f;
        }

        scoreText.text = "Score: " + score;
        comboText.text = "Combo: x" + combo;
        timeText.text = "Time: " + playTime;
    }
}
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