Menu
CoddyTech

Formater les nombres

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

Un nombre ajouté à une chaîne s’affiche comme C# l’écrit : un chronomètre affiche 12.34567, et un flottant é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 écrit : 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 en secondes. Convertis d’abord le temps en int, ce qui supprime la fraction ; ensuite, la division entière par 60 donne le nombre entier de minutes et % 60 les 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}";   // Lap: 1:23

00 conserve deux chiffres : sans cela, 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 0:60 pendant un instant.

challenge icon

Défi

Facile

Formate les trois nombres de l’arcade.

  1. Dans Update(), ajoute d’abord int seconds = (int)playTime;.
  2. Affiche le score sur six chiffres, Score: 000450, avec {score:000000}, et le combo avec une décimale, Combo: x2.5, avec {combo:0.0}.
  3. Affiche le temps sous la forme Time: 2:07 : seconds / 60, deux-points, puis seconds % 60 sur deux chiffres.

Appuie sur « Jouer » et appuie sur Espace : le score reste sur six chiffres. Puis clique 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;
    }
}

Toutes les leçons de Créer de vrais jeux

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