Menu
CoddyTech

I numeri decimali richiedono una f

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 3 di 85.

I numeri interi non bastano per un gioco: un palloncino fluttua a 3.5, un giocatore corre a 4.2 unità al secondo. I numeri con la virgola hanno un tipo tutto loro, float:

float speed = 4.2f;

Nota la f alla fine. In C#, un semplice 4.2 è un double, un altro tipo decimale, e le posizioni e le dimensioni di Unity sono valori float. La f indica a C# che il numero è un float. Se la ometti, Unity si rifiuta di avviare il gioco e mostra questo errore nella Console:

error CS0664: Literal of type double cannot be implicitly converted to type 'float'; use an 'F' suffix to create a literal of this type

Sembra spaventoso, ma significa solo «aggiungi la f». Un numero intero come 2 non ha bisogno della f: così com'è, può essere rappresentato come float.

Un'altra sorpresa: dividendo due int si ottiene solo la parte intera, quindi 7 / 2 dà 3. Scrivi 7 / 2f per ottenere 3.5.

challenge icon

Sfida

Facile

Correggi lo script del palloncino, poi fallo fluttuare più in alto e diventare più grande.

  1. Premi «Gioca»: la Console mostra l’errore CS0664 sulla riga height.
  2. Modifica quella riga così: float height = 3.5f;.
  3. Modifica la riga della dimensione così: float size = 1.5f;. Ogni numero con la virgola decimale deve avere la sua f.

Premi «Gioca»: il palloncino fluttua a 3.5, una volta e mezza la sua dimensione. Poi premi «Verifica».

Provalo tu

using UnityEngine;

public class Balloon : MonoBehaviour
{
    void Start()
    {
        float height = 2.5;
        float size = 1;

        transform.position = new Vector3(0, height, 0);
        transform.localScale = new Vector3(size, size, size);
    }
}

Tutte le lezioni di Fondamenti di scripting in Unity

Esercitati da solo: Playground Unity