Menu
CoddyTech

Formattare i numeri

Fa parte della sezione Creare veri giochi del percorso Unity di Coddy. Lezione 3 di 56.

Un numero unito 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 appare. 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 si leggono meglio espressi in minuti e secondi. Prima converti 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:23

00 mantiene due cifre: senza, 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; con l'arrotondamento, per un momento verrebbero visualizzati come 0:60.

challenge icon

Sfida

Facile

Il Scoreboard.cs della sala giochi mostra i numeri senza formattazione. Premendo la barra spaziatrice si ottengono 100 punti moltiplicati per la combo e la combo aumenta di 0.5, mentre playTime conta i secondi di gioco (nell'Inspector parte da 47.5). Lascia invariato il conteggio e modifica il modo in cui vengono scritti i tre testi:

  • scoreText: il punteggio con sei cifre, come Score: 000450.
  • comboText: la combo con un decimale, come Combo: x2.5, e Combo: x1.0 all'inizio.
  • timeText: minuti e secondi interi, come Time: 2:07. I secondi hanno sempre due cifre e non vengono mai arrotondati per eccesso.

Premi Play, totalizza punti alcune volte, poi premi Check.

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;
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Creare veri giochi