Oppdatering vs LateUpdate
I Unity brukes oppdaterings- og LateUpdate-funksjonene vanligvis til å oppdatere atferden til objekter i en scene, og selv om de tjener lignende formål, er det viktige forskjeller mellom to.
'Update'
Funksjonen 'Update' kalles én gang per ramme og brukes til de fleste generelle oppgaver, for eksempel input-håndtering og objekt bevegelse. Det er viktig å merke seg at 'Update' ikke er bildefrekvensavhengig, noe som betyr at den kan variere i utførelsestid avhengig av ytelsen.
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 horisontale og vertikale aksen og bruker den til å kontrollere objektets bevegelse. Metoden 'Translate' brukes til å flytte objektet i den angitte retningen med konstant hastighet. Generelle oppgaver kan også utføres innenfor funksjonen 'Update'.
'LateUpdate'
'LateUpdate'-funksjonen kalles også én gang per ramme, men den utføres etter at alle funksjonene 'Update' er fullført. Det brukes ofte for å sikre at andre oppdateringer, som objekt bevegelse eller animasjon, er fullført før du utfører ytterligere handlinger som avhenger av disse oppdateringene.
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 brukes funksjonen 'LateUpdate' for å jevnt følge et målobjekt med et kamera. Det sikrer at kameraets posisjon oppdateres etter at målets bevegelse er behandlet i 'Update' funksjonene. Ytterligere handlinger som avhenger av objektets oppdaterte posisjon kan også utføres innen 'LateUpdate'.
'Update' vs 'LateUpdate'
Viktige forskjeller mellom funksjonene 'Update' og LateUpdate:
- 'Update' kalles først i rammen, etterfulgt av LateUpdate.
- 'Update' er egnet for de fleste generelle oppgaver, inkludert inndatahåndtering, objekt bevegelse og ikke-kamerarelaterte operasjoner.
- LateUpdate brukes ofte til kamerarelaterte oppgaver, for eksempel jevn følge et målobjekt eller utføre handlinger avhengig av andre oppdateringer.
- Å bruke LateUpdate bidrar til å sikre at handlinger som er avhengige av andre oppdateringer skjer etter at disse oppdateringene er behandlet.
Konklusjon
Det er verdt å merke seg at både 'Update' og 'LateUpdate' kan eksistere side om side i det samme skriptet, noe som gjør det mulig å skille forskjellige typer oppdateringer. Å forstå forskjellene og bruke den passende funksjonen i hver kontekst bidrar til å oppnå ønsket oppførsel i Unity-prosjektene.