Uppdatering vs FixedUpdate vs LateUpdate

En framträdande del av Unity API är uppdateringsfunktionerna, som är de funktioner som körs kontinuerligt.

Unity har tre typer av uppdateringsfunktioner: 'Update', FixedUpdate och LateUpdate.

'Update' mot FixedUpdate

Skillnaden mellan 'Update' och FixedUpdate funktioner är hur ofta de körs.

Funktionen 'Update' körs en gång per bildruta medan FixedUpdate körs med en konstant hastighet, kontrollerad av värdet "Fixed Timestamp" i 'Project Settings' -> 'Time'.

'Update' funktioner är lämpliga för programmering av spellogik, spelarinmatning och i princip alla icke-fysiska beräkningar.

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            //Space button has been pressed
        }    
    }

Å andra sidan är FixedUpdate-funktioner lämpliga för fysikbaserade beräkningar, såsom Raycasting, applicering av krafter på Rigidbodies, eller andra beräkningar som behöver vara oberoende av ramhastighet.

    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.");
        }
    }

Uppdatering vs LateUpdate

'Update' och LateUpdate är identiska när det gäller körningsfrekvens (båda körs en gång per bildruta), men LateUpdate körs efter alla 'Update' funktioner.

Slutligen, funktionen LateUpdate används vanligtvis för att modifiera animerade modellben (t.ex. att få spelarmodellen att titta upp och ner) eller för att implementera en smidig kameraföljning.

    void LateUpdate()
    {
        //Make camera tagged 'MainCamera' look at this object transform
        Camera mainCamera = Camera.main;
        mainCamera.transform.LookAt(transform);
    }

Hämtmat

Varje uppdateringsfunktion har sitt eget användningsfall.

Använd dem i kombination för att implementera en mängd olika scenarier.

Föreslagna artiklar
Guide till MonoBehaviour in Unity
Introduktion till Unity C# Scripting Language
Använder Runtime Animator Controller i Unity
Enhetslista med användbara sökord i C#
Implementering av tangentbords- och musingång i Unity
Förstå funktioner och metodanrop
Skapa villkorliga uttalanden (om annat) i Unity Code