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.
Sfida
MedioFai cadere una scatola ogni interval secondi (2 nell’Inspector).
- Aggiungi i campi
float timer;eint count;. InUpdate(), aggiungiTime.deltaTimeatimer. - Quando
timer >= interval, chiamaInstantiate(boxPrefab, transform.position, Quaternion.identity);e sottraiintervaldatimer. - Poi aggiungi 1 a
counte 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
1Nozioni di base di C# in Unity
Ciao, UnityVariabiliI numeri decimali richiedono una fTesto nella ConsoleVariabili che ricordanoIf ed ElseConfrontare i numeriRipasso: il collezionista di monete7Cicli e metodi
Ripeti con forCicli annidatiScrivere un metodoMetodi che restituiscono valoriArrayRiepilogo: scala10Trovare gli oggetti
Trovare per nomeTagTrovare per tipoI riferimenti battono la ricercaIl null di UnityRipasso: la moneta più vicina13Progetto: Schiva i blocchi
Il corridoreBlocchi dal cielo2Fallo muovere
Posiziona il cuboMuovilo a ogni frameRuotalo ogni secondoGuidalo con i tastiRiepilogo: guida il cubo5Vettori
Somma di vettoriDirezioniSpazio locale e spazio mondoVelocità diagonaleDistanza tra gli oggettiVector3 è una structRiepilogo: pilota di droni8GameObject e componenti
Riferimenti nell'InspectorOttenere un componenteComponenti mancantiAggiungere un componenteRequireComponentMostrare e nascondereRiepilogo: interruttore della luce11Prefab e generazione di oggetti
Prefab e InstantiateGenerare con un timerGenerare in una grigliaElenchi di oggettiEliminare il più recenteDestroyGenerazioni casualiRipasso: fuochi d'artificio3L’Inspector
Campi dell’InspectorSerializeFieldNumeri decimali e MathfAttributi dell’InspectorRiepilogo: ascensore6Trasformazioni e gerarchia
Genitori e figliIssare la bandieraScalaOsservare gli oggettiMuoversi verso un puntoRiepilogo: Luna in orbita9Progetto: Acchiappa la stella
Il raccoglitoreUna stella cadente12Il ciclo di vita dello script
Awake e StartUpdate e LateUpdateOnEnable e OnDisableL'ordine del ciclo di vitaRiepilogo: Lifecycle LoggerEsercitati da solo: Playground Unity