Oppdatering vs FixedUpdate vs LateUpdate

En fremtredende del av Unity API er oppdateringsfunksjonene, som er funksjonene som kjører kontinuerlig.

Unity har tre typer oppdateringsfunksjoner: 'Update', FixedUpdate og LateUpdate.

'Update' vs FixedUpdate

Forskjellen mellom 'Update' og FixedUpdate funksjoner er hvor ofte de kjører.

'Update'-funksjonen kjører én gang per bilde mens FixedUpdate kjører med en konstant hastighet, kontrollert av "Fixed Timestamp"-verdien i 'Project Settings' -> 'Time'.

'Update' funksjoner er egnet for programmering av spilllogikken, spillerinndata og i utgangspunktet alle ikke-fysiske beregninger.

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

På den annen side er FixedUpdate funksjoner egnet for fysikkbaserte beregninger, for eksempel Raycasting, påføring av krefter på Rigidbodies, eller alle beregninger som må være framerate uavhengige.

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

Oppdatering vs LateUpdate

'Update' og LateUpdate er identiske når det gjelder kjøringsfrekvens (begge kjøres én gang per ramme), men LateUpdate kjører etter alle 'Update' funksjoner.

Til slutt, LateUpdate-funksjonen brukes ofte til å modifisere animerte modellbein (f.eks. få spillermodellen til å se opp og ned) eller for å implementere en jevn kamerafølge.

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

Ta bort

Hver oppdateringsfunksjon har sin egen brukstilfelle.

Bruk dem i kombinasjon for å implementere en rekke scenarier.

Foreslåtte artikler
Guide til MonoBehaviour in Unity
Introduksjon til Unity C# Scripting Language
Bruker Runtime Animator Controller i Unity
Enhetsliste over nyttige søkeord i C#
Implementering av tastatur- og musinngang i Unity
Forstå funksjoner og metodeanrop
Opprette betingede erklæringer (hvis annet) i Unity Code