wat is het verschil tussen Update & FixedUpdate in Unity?

Wat is het verschil tussen de methoden Updateen FixedUpdateen wanneer moeten deze methoden worden gebruikt?


Antwoord 1, autoriteit 100%

Van het forum:

Update wordt één keer per frame uitgevoerd. FixedUpdate kan één keer, nul of meerdere worden uitgevoerd
keer per frame, afhankelijk van het aantal physics-frames per seconde
ingesteld in de tijdinstellingen en hoe snel/langzaam de framerate is.

Zie ook het antwoord van duck op hetzelfde forum voor een gedetailleerde uitleg van het verschil tussen de twee.

Het is om deze reden dat FixedUpdate moet worden gebruikt bij het aanvragen
krachten, koppels of andere fysica-gerelateerde functies – omdat je weet
het wordt exact synchroon uitgevoerd met de physics engine zelf.

Terwijl Update() uit de pas kan lopen met de physics engine, ofwel
sneller of langzamer, afhankelijk van hoe zwaar de graphics zijn
op elk moment de rendering-engine aanzetten, die – indien gebruikt voor
natuurkunde – zou overeenkomstige verschillende fysieke effecten geven!


Antwoord 2, autoriteit 74%

FixedUpdatewordt gebruikt om in de pas te lopen met de physics-engine, dus alles wat op een star lichaam moet worden toegepast, moet in FixedUpdate gebeuren.
Updatedaarentegen werkt onafhankelijk van de physics engine. Dit kan gunstig zijn als de framerate van een gebruiker zou dalen, maar je hebt een bepaalde berekening nodig om te blijven uitvoeren, bijvoorbeeld als je een chat- of voip-client aan het updaten bent, zou je een regelmatige oude update willen.

Unity heeft hier een mooie video over Update vs. FixedUpdate: Unity – Update vs. FixedUpdate

De site is een geweldige bron voor beginnende gameprogrammeurs.


Antwoord 3, autoriteit 6%

Als aanvulling op de andere antwoorden, is Update op tijd met de framesnelheid, niet met de natuurkundige berekeningssnelheid. Dit betekent dat wanneer iets visueel verandert, je het in Update wilt laten doen, niet in FixedUpdate. Dit zorgt ervoor dat het altijd op tijd is voor het moment waarop het frame wordt weergegeven. Ik ben een aantal gevallen tegengekomen waarin ik beweging had die er niet soepel uitzag omdat ik deze had laten berekenen in FixedUpdate.

De enige potentiële kosten om iets in Update te laten doen dat in FixedUpdate zou moeten worden gedaan, is dat uw natuurkundige getrouwheid zou kunnen afnemen, vooral als u lage framesnelheden bereikt (maar over het algemeen is dat een apart probleem dat moet worden opgelost, dus het is meestal geen goede reden om iets in FixedUpdate te zetten in plaats van Update).

Als je de volgorde wilt bepalen waarin verschillende scripts hun Updates uitvoeren, is FixedUpdate de verkeerde boom om op te blaffen; je zou in plaats daarvan naar iets als EarlyUpdatemoeten kijken.


Antwoord 4, autoriteit 6%

Update(): bevat die code die moet worden uitgevoerd met visuele weergave

FixedUpdate(): bevat die code die synchroon moet zijn met natuurkundige interactie

bron: https://youtu.be/noXtT_zN-84?t=3057


Antwoord 5, autoriteit 3%

Het viel me op dat in de meeste antwoorden hier duidelijk werd uitgelegd waar FixedUpdategoed voor was en wanneer het te gebruiken. Ik heb echter geen duidelijke voorbeelden gezien voor wanneer reguliere Updatezou moeten worden gebruikt; Het volgende komt uit de officiële Unity-zelfstudie:

Update()

  • Elk frame
  • genoemd

  • Gebruikt voor regelmatige updates zoals:
    • Niet-natuurkundige objecten verplaatsen
    • Eenvoudige timers
    • Invoer ontvangen (ook bekend als toetsaanslag enz.)
  • Oproeptijden voor update-interval variëren, dwz niet-uniform gespreid

FixedUpdate()

  • Elke fysica-stap
  • genoemd

  • FixedUpdate()intervallen zijn consistent, dwz gelijkmatig verdeeld
  • Gebruikt voor regelmatige updates, zoals het aanpassen van fysieke (bijv. RigidBody) objecten

LEAVE A REPLY

Please enter your comment!
Please enter your name here

seven + 14 =

Other episodes