Aggiornamento vs FixedUpdate vs LateUpdate
Una parte importante dell'Unity API sono le funzioni di aggiornamento, ovvero le funzioni che vengono eseguite continuamente.
Unity ha tre tipi di funzioni di aggiornamento: 'Update', FixedUpdate e LateUpdate.
'Update' vs FixedUpdate
La differenza tra le funzioni 'Update' e FixedUpdate sta nella frequenza con cui vengono eseguite.
La funzione 'Update' viene eseguita una volta per fotogramma mentre FixedUpdate viene eseguita a una velocità costante, controllata dal valore "Fixed Timestamp" in 'Project Settings' -> 'Time'.
'Update' le funzioni sono adatte per programmare la logica del gioco, l'input del giocatore e praticamente qualsiasi calcolo non fisico.
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
//Space button has been pressed
}
}
D'altra parte, le funzioni FixedUpdate sono adatte per calcoli basati sulla fisica, come Raycasting, applicazione di forze a corpi rigidi o qualsiasi calcolo che debba essere indipendente dal framerate.
void FixedUpdate()
{
//Use Physics Raycast to detect if there any object in front
RaycastHit hit;
if(Physics.Raycast(transform.position, transform.forward, out hit, 10))
{
Debug.Log("Object '" + hit.transform.name + "' is currently in front of this object.");
}
}
Aggiornamento vs LateUpdate
'Update' e LateUpdate sono identici in termini di frequenza di esecuzione (entrambi vengono eseguiti una volta per frame), ma LateUpdate viene eseguito dopo tutte le funzioni 'Update'.
Infine, la funzione LateUpdate viene comunemente utilizzata per modificare le ossa del modello animato (ad esempio facendo guardare il modello del giocatore in alto e in basso) o per implementare un seguito fluido della telecamera.
void LateUpdate()
{
//Make camera tagged 'MainCamera' look at this object transform
Camera mainCamera = Camera.main;
mainCamera.transform.LookAt(transform);
}
Porta via
Ogni funzione di aggiornamento ha il proprio caso d'uso.
Usateli in combinazione per implementare un'ampia varietà di scenari.