Update versus Vaste Update

In Unity worden zowel de functies Update als FixedUpdate gebruikt om het gedrag van objecten in een scène bij te werken, en terwijl ze dienen vergelijkbare doeleinden, er zijn belangrijke verschillen tussen de twee.

'Update'

De functie 'Update' wordt één keer per frame aangeroepen en is ideaal voor het verwerken van invoer, het bijwerken van object posities en het uitvoeren van de meeste algemene taken. Het is niet afhankelijk 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'.

'FixedUpdate'

De functie 'FixedUpdate' wordt met vaste tijdsintervallen aangeroepen, waardoor deze geschikt is voor het uitvoeren van natuurkundegerelateerde berekeningen. Het is framesnelheidsonafhankelijk en zorgt voor consistent gedrag op verschillende apparaten en framesnelheden.

void FixedUpdate()
{
    // Physics calculations
    rb.AddForce(transform.forward * forceMagnitude);
    
    // Other physics-related tasks
    // ...
}

In het bovenstaande voorbeeld oefenen we een constante kracht uit op een Rigidbody-component in de voorwaartse richting van het object. Het gebruik van 'FixedUpdate' zorgt ervoor dat de natuurkundige berekeningen met een vaste snelheid plaatsvinden, ongeacht de framesnelheid. Dit is belangrijk voor het behouden van een stabiele natuurkundige simulatie.

'Bijwerken' versus 'FixedUpdate'

Belangrijkste verschillen tussen de functies 'Update' en 'FixedUpdate':

  • 'Update' wordt één keer per frame aangeroepen, terwijl FixedUpdate met vaste tijdsintervallen wordt aangeroepen.
  • 'Update' is framesnelheidsafhankelijk, terwijl FixedUpdate framesnelheidsonafhankelijk is.
  • 'Update' is geschikt voor de meeste algemene taken, waaronder invoerverwerking, objectbeweging en niet-natuurkundige bewerkingen.
  • FixedUpdate is speciaal ontworpen voor natuurkundegerelateerde berekeningen, zoals het uitoefenen van krachten, het aanpassen van Rigidbody-eigenschappen en het uitvoeren van andere op natuurkunde gebaseerde bewerkingen.

Conclusie

Het is belangrijk op te merken dat 'Update' en 'FixedUpdate' naast elkaar kunnen bestaan ​​in hetzelfde script, waardoor natuurkundige code gescheiden kan worden van andere algemene code. Als u de verschillen begrijpt en in elke context de juiste functie gebruikt, kunt u soepel en consistent gedrag in de Unity projecten garanderen.

Voorgestelde artikelen
Gids voor monogedrag in eenheid
Inleiding tot Unity C#-scripttaal
Wakker versus start
Runtime Animator Controller gebruiken in Unity
Eenheidslijst met nuttige trefwoorden in C#
Toetsenbord- en muisinvoer in Unity implementeren
Functies en methodeaanroepen begrijpen