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:2300 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.
Défi
FacileFormate les trois nombres de l’arcade.
- Dans
Update(), ajoute d’abordint seconds = (int)playTime;. - 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}. - Affiche le temps sous la forme
Time: 2:07:seconds / 60, deux-points, puisseconds % 60sur 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
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 niveau2Boutons 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 banqueEntraînez-vous par vous-même : Playground Unity