Menu
CoddyTech

Variabili che ricordano

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

Unity chiama Update() a ogni frame e ogni chiamata riparte da zero: una variabile creata all'interno di un metodo viene eliminata quando il metodo termina. Perciò questo contatore non supera mai 1:

void Update()
{
    int frames = 0;
    frames++;
}

frames++ aggiunge 1, il modo breve per scrivere frames += 1. Ma al frame successivo viene eseguito di nuovo int frames = 0; e si ricomincia da capo.

Per ricordare un valore da un frame al successivo, crea la variabile all'interno della classe, ma al di fuori di ogni metodo. Una variabile definita lì è un campo: vive finché esiste l'oggetto e tutti i metodi della classe possono usarla.

int frames = 0;

void Update()
{
    frames++;
}

Ora frames continua a contare: 1, 2, 3 e così via, uno in più a ogni frame.

challenge icon

Sfida

Facile

Fai in modo che la pianta continui a crescere.

  1. Taglia la riga int frames = 0; dall'interno di Update().
  2. Incollala sopra void Update(), all'interno della classe, così frames diventa un campo che ricorda il suo valore.

Premi «Gioca»: la pianta cresce un po' a ogni fotogramma. Poi premi «Verifica».

Provalo tu

using UnityEngine;

public class Grower : MonoBehaviour
{
    void Update()
    {
        int frames = 0;
        frames++;
        transform.localScale = new Vector3(1, 1 + frames * 0.01f, 1);
    }
}

Tutte le lezioni di Fondamenti di scripting in Unity

Esercitati da solo: Playground Unity