Opdatering vs FixedUpdate vs LateUpdate

En fremtrædende del af Unity API er opdateringsfunktionerne, som er de funktioner, der kører kontinuerligt.

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

'Update' vs FixedUpdate

Forskellen mellem 'Update' og FixedUpdate funktioner er, hvor ofte de kører.

'Update'-funktionen kører én gang pr. billede, mens FixedUpdate kører med en konstant hastighed, styret af "Fixed Timestamp"-værdien i 'Project Settings' -> 'Time'.

'Update' funktioner er velegnede til programmering af spillogikken, spillerinput og stort set alle ikke-fysiske beregninger.

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

På den anden side er FixedUpdate-funktioner velegnede til fysikbaserede beregninger, såsom Raycasting, påføring af kræfter på Rigidbodies eller enhver beregning, der skal være framerate-uafhængig.

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

Opdatering vs LateUpdate

'Update' og LateUpdate er identiske med hensyn til kørselsfrekvens (begge køres én gang pr. frame), men LateUpdate kører efter alle 'Update' funktioner.

Endelig er LateUpdate-funktionen almindeligvis brugt til at ændre animerede modelknogler (f.eks. få afspillermodellen til at se op og ned) eller til at implementere en jævn kamerafølge.

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

Tag væk

Hver opdateringsfunktion har sin egen use case.

Brug dem i kombination til at implementere en lang række scenarier.