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.

Articoli suggeriti
Guida al monocomportamento nell'unità
Introduzione al linguaggio di scripting Unity C#
Utilizzo del controller Runtime Animator in Unity
Elenco Unity di parole chiave utili in C#
Implementazione dell'input da tastiera e mouse in Unity
Comprensione delle funzioni e delle chiamate ai metodi
Creazione di istruzioni condizionali (if-else) in Unity Code