Menu
CoddyTech

Generare con un timer

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

Uno generatore che crea qualcosa ogni pochi secondi ha bisogno di un timer. Time.deltaTime è il tempo impiegato dall’ultimo frame, quindi sommandolo in un campo a ogni Update() si ottengono i secondi trascorsi. Quando il totale raggiunge l’intervallo, genera l’oggetto e sottrai l’intervallo dal totale.

Questa fontana lancia una goccia d’acqua ogni mezzo secondo:

public GameObject dropPrefab;
public float interval = 0.5f;
float timer;

void Update()
{
    timer += Time.deltaTime;
    if (timer >= interval)
    {
        Instantiate(dropPrefab, transform.position, Quaternion.identity);
        timer -= interval;
    }
}

timer -= interval conserva il resto: se il frame finisce a 0.51 secondi, il conteggio del mezzo secondo successivo parte da 0.01 e le gocce restano a tempo. timer = 0 eliminerebbe quel resto, quindi ogni goccia arriverebbe un po’ in ritardo e il ritardo si accumulerebbe nel corso di una partita lunga. timer è privato perché nessuno deve impostarlo nell’Inspector.

challenge icon

Sfida

Medio

Fai cadere una scatola ogni interval secondi (2 nell’Inspector).

  1. Aggiungi i campi float timer; e int count;. In Update(), aggiungi Time.deltaTime a timer.
  2. Quando timer >= interval, chiama Instantiate(boxPrefab, transform.position, Quaternion.identity); e sottrai interval da timer.
  3. Poi aggiungi 1 a count e registra "Box " + count.

Premi «Gioca»: una scatola cade ogni 2 secondi e la Console conta Box 1, Box 2. Poi premi «Verifica».

Provalo tu

using UnityEngine;

public class BoxDropper : MonoBehaviour
{
    public GameObject boxPrefab;
    public float interval = 1f;

    void Update()
    {
        // Ogni interval secondi: rilascia una scatola e registra "Box 1", "Box 2"...
    }
}

Tutte le lezioni di Fondamenti di scripting in Unity

Esercitati da solo: Playground Unity