Update versus LateUpdate

In Unity worden de functies Update en LateUpdate vaak gebruikt om het gedrag van objecten in een scène bij te werken, en Hoewel ze vergelijkbare doeleinden dienen, zijn er belangrijke verschillen tussen beide.

'Update'

De functie 'Update' wordt één keer per frame aangeroepen en wordt gebruikt voor de meeste algemene taken, zoals de afhandeling van invoer en object beweging. Het is belangrijk op te merken dat 'Update' niet afhankelijk is van de framesnelheid, wat betekent dat de uitvoeringstijd kan variëren, afhankelijk van de prestaties.

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
    // ...
}

In het bovenstaande voorbeeld halen we input op van de horizontale en verticale assen en gebruiken deze om de beweging van het object te besturen. De methode 'Translate' wordt gebruikt om het object met een constante snelheid in de opgegeven richting te verplaatsen. Algemene taken kunnen ook worden uitgevoerd binnen de functie 'Update'.

'LateUpdate'

De functie 'LateUpdate' wordt ook één keer per frame aangeroepen, maar wordt uitgevoerd nadat alle functies 'Update' zijn voltooid. Het wordt vaak gebruikt om ervoor te zorgen dat andere updates, zoals object beweging of animatie, zijn voltooid voordat aanvullende acties worden uitgevoerd die afhankelijk zijn van die updates.

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

In het bovenstaande voorbeeld wordt de functie 'LateUpdate' gebruikt om een ​​doelobject soepel te volgen met een camera. Het zorgt ervoor dat de positie van de camera wordt bijgewerkt nadat de beweging van het doel is verwerkt in de functies 'Update'. Extra acties die afhankelijk zijn van de bijgewerkte positie van het object kunnen ook worden uitgevoerd binnen 'LateUpdate'.

'Bijwerken' versus 'LateUpdate'

Belangrijkste verschillen tussen de functies 'Update' en LateUpdate:

  • 'Update' wordt als eerste in het frame aangeroepen, gevolgd door LateUpdate.
  • 'Update' is geschikt voor de meeste algemene taken, waaronder invoerverwerking, object beweging en niet-cameragerelateerde bewerkingen.
  • LateUpdate wordt vaak gebruikt voor cameragerelateerde taken, zoals het soepel volgen van een doelobject of het uitvoeren van acties afhankelijk van andere updates.
  • Het gebruik van LateUpdate zorgt ervoor dat acties die afhankelijk zijn van andere updates plaatsvinden nadat die updates zijn verwerkt.

Conclusie

Het is vermeldenswaard dat zowel 'Update' en 'LateUpdate' naast elkaar kunnen bestaan ​​in hetzelfde script, waardoor verschillende soorten updates kunnen worden gescheiden. Het begrijpen van de verschillen en het gebruiken van de juiste functie in elke context helpt om het gewenste gedrag in de Unity projecten te bereiken.

Voorgestelde artikelen
Update versus Vaste Update
Update versus vast Update versus Late Update
LateUpdate en FixedUpdate vergelijken in Unity
Wakker versus start
Aangepaste updatesnelheid implementeren in Unity
Hoe je het spel in eenheid kunt pauzeren
Unity implementeert voetstapgeluiden