Opdatering vs LateUpdate

I Unity bruges funktionerne Update og LateUpdate almindeligvis til at opdatere adfærden for objekter i en scene, og selvom de tjener lignende formål, er der vigtige forskelle mellem to.

'Update'

Funktionen 'Update' kaldes én gang pr. frame og bruges til de fleste generelle opgaver, såsom input-håndtering og objekt bevægelse. Det er vigtigt at bemærke, at 'Update' ikke er billedhastighedsafhængig, hvilket betyder, at den kan variere i udførelsestid afhængigt af ydelsen.

void Update()
{
    // Input handling
    float horizontalInput = Input.GetAxis("Horizontal");
    float verticalInput = Input.GetAxis("Vertical");
    
    // Movement
    Vector3 movement = new Vector3(horizontalInput, 0, verticalInput);
    transform.Translate(movement * speed * Time.deltaTime);
    
    // General-purpose tasks
    // ...
}

I eksemplet ovenfor henter vi input fra den vandrette og lodrette akse og bruger det til at styre objektets bevægelse. Metoden 'Translate' bruges til at flytte objektet i den angivne retning med konstant hastighed. Generelle opgaver kan også udføres inden for funktionen 'Update'.

'LateUpdate'

'LateUpdate'-funktionen kaldes også én gang pr. frame, men den udføres efter at alle funktionerne 'Update' er fuldført. Det bruges almindeligvis til at sikre, at andre opdateringer, såsom objekt bevægelse eller animation, er afsluttet, før der udføres yderligere handlinger, der afhænger af disse opdateringer.

void LateUpdate()
{
    // Camera follow
    Vector3 desiredPosition = target.position + offset;
    transform.position = Vector3.Lerp(transform.position, desiredPosition, smoothness);
    
    // Additional actions after other updates
    // ...
}

I eksemplet ovenfor bruges funktionen 'LateUpdate' til jævnt at følge et målobjekt med et kamera. Det sikrer, at kameraets position opdateres, efter at målets bevægelse er blevet behandlet i 'Update' funktionerne. Yderligere handlinger, der afhænger af objektets opdaterede position, kan også udføres inden for 'LateUpdate'.

'Update' vs 'LateUpdate'

Vigtigste forskelle mellem funktionerne 'Update' og LateUpdate:

  • 'Update' kaldes først i rammen, efterfulgt af LateUpdate.
  • 'Update' er velegnet til de fleste generelle opgaver, herunder inputhåndtering, objekt bevægelse og ikke-kamera-relaterede operationer.
  • LateUpdate bruges almindeligvis til kamerarelaterede opgaver, såsom glat følge et målobjekt eller udføre handlinger afhængigt af andre opdateringer.
  • Brug af LateUpdate hjælper med at sikre, at handlinger, der er afhængige af andre opdateringer, sker, efter at disse opdateringer er blevet behandlet.

Konklusion

Det er værd at bemærke, at både 'Update' og 'LateUpdate' kan eksistere side om side i det samme script, hvilket gør det muligt at adskille forskellige typer opdateringer. At forstå forskellene og bruge den passende funktion i hver sammenhæng hjælper med at opnå den ønskede adfærd i Unity-projekterne.

Foreslåede artikler
Opdatering vs FixedUpdate vs LateUpdate
Sammenligning af LateUpdate og FixedUpdate i Unity
Opdatering vs FixedUpdate
Opret en GrabPack i Unity Inspireret af Poppy Playtime
Oprettelse af en Bullet Time-effekt i Unity
Oprettelse af interaktive objekter i enhed
Implementering af kinetiske interaktioner i enhed