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.