Update versus vast Update versus Late Update

Een prominent onderdeel van de Unity API zijn de updatefuncties, dit zijn de functies die continu worden uitgevoerd.

Unity heeft drie soorten updatefuncties: 'Update', FixedUpdate en LateUpdate.

'Update' versus FixedUpdate

Het verschil tussen de functies 'Update' en FixedUpdate zit in hoe vaak ze worden uitgevoerd.

De functie 'Update' wordt één keer per frame uitgevoerd, terwijl FixedUpdate met een constante snelheid werkt, bestuurd door de waarde "Fixed Timestamp" in 'Project Settings' -> 'Time'.

'Update' functies zijn geschikt voor het programmeren van de spellogica, spelersinvoer en eigenlijk alle niet-natuurkundige berekeningen.

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

Aan de andere kant zijn FixedUpdate-functies geschikt voor op fysica gebaseerde berekeningen, zoals Raycasting, het uitoefenen van krachten op starre lichamen of andere berekeningen die framerate-onafhankelijk moeten zijn.

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

Updaten vs LateUpdate

'Update' en LateUpdate zijn identiek in termen van runfrequentie (beide draaien één keer per frame), maar LateUpdate draait na alle 'Update' functies.

Ten slotte wordt de functie LateUpdate vaak gebruikt om geanimeerde modelbeenderen aan te passen (bijvoorbeeld om het spelersmodel op en neer te laten kijken) of om een ​​vloeiende cameravolging te implementeren.

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

Afhaal

Elke updatefunctie heeft zijn eigen gebruiksscenario.

Gebruik ze in combinatie om een ​​breed scala aan scenario's te implementeren.

Voorgestelde artikelen
Gids voor monogedrag in eenheid
Wakker versus start
Inleiding tot Unity C#-scripttaal
Toetsenbord- en muisinvoer in Unity implementeren
Runtime Animator Controller gebruiken in Unity
Eenheidslijst met nuttige trefwoorden in C#
Update versus LateUpdate