Formattare i numeri
Fa parte della sezione Creare veri giochi del percorso Unity di Coddy. Lezione 3 di 60.
Un numero concatenato a una stringa viene visualizzato nel modo in cui lo scrive C#: un timer mostra 12.34567 e un float che vale 2 mostra 2, senza decimali. Una stringa di formato in ToString() decide invece come viene visualizzato. Ogni 0 al suo interno rappresenta una cifra che viene sempre scritta: 7.ToString("000") è 007 e 41.27f.ToString("0.0") è 41.3, arrotondato a una cifra decimale. Nell'interpolazione di stringhe, lo stesso formato va dopo i due punti: $"{coins:000}", $"{topSpeed:0.0} m/s".
I tempi sono più leggibili espressi in minuti e secondi. Converti prima il tempo in int, eliminando così la parte frazionaria; poi la divisione intera per 60 dà i minuti interi e % 60 i secondi rimanenti. Un giro di 83.46 secondi:
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}"; // Giro: 1:2300 mantiene due cifre: senza di esso, un giro di 64 secondi verrebbe visualizzato come 1:4 invece di 1:04. Inoltre, poiché (int) elimina la parte frazionaria invece di arrotondare, 59.7 secondi vengono visualizzati come 0:59; l'arrotondamento mostrerebbe per un momento 0:60.
Sfida
FacileFormatta i tre numeri dell'arcade.
- In
Update(), aggiungi per prima cosaint seconds = (int)playTime;. - Mostra il punteggio con sei cifre,
Score: 000450, usando{score:000000}, e la combo con un decimale,Combo: x2.5, usando{combo:0.0}. - Mostra il tempo come
Time: 2:07:seconds / 60, due punti, poiseconds % 60con due cifre.
Premi «Gioca» e premi Spazio: il punteggio mantiene sei cifre. Poi premi «Verifica».
Provalo tu
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;
}
}
Tutte le lezioni di Creare veri giochi
1Testo sullo schermo
Canvas e testoMostra il punteggioFormattare i numeriUn timer per il conto alla rovesciaRiepilogo: tachimetro2Pulsanti e schermate
Pulsanti e onClickLambdaCollegare nell'InspectorPannelli attivi e disattiviBarre della saluteRiepilogo: negozio degli upgrade5Salvare con PlayerPrefs
Salvare un numeroCaricare con un valore predefinitoPunteggio massimoSalvare le impostazioniRiepilogo: monete in banca8Controller del personaggio
CharacterController.MoveGravità manualeSaltoSpingere gli oggettiMuoviti dove guardiRiepilogo: doppio salto3Il gestore del gioco
Uno script gestisce il giocoIl SingletonStati di giocoSelezionare lo statoRiepilogo: gestore del round6Progetto: Runner infinito
Tre corsieOstacoli in arrivo9Il nuovo sistema di input
Due sistemi di inputTastiera e mousePremuto in questo frameAzioni di inputRiepilogo: cambio di inputEsercitati da solo: Playground Unity