Tiedän eroja Update()
ja FixedUpdate()
ja viime aikoina olen käyttänyt molempia toimintoja yhdessä komentosarjassa. Koodi toimii, mutta minulla on kysymys:
Aikooko näiden molempien toimintojen käyttäminen aiheuttaa ongelmia? Onko molempien käyttö turvallista?
Vastaa
Päivitä tilaus
Kun seuraat pelilogiikkaa ja vuorovaikutusta, animaatioita, kameran sijaintia jne., voit käyttää muutamia erilaisia tapahtumia. Yleinen malli on suorittaa useimmat päivitystoiminnon tehtävät, mutta voit käyttää myös muita toimintoja.
FixedUpdate:
FixedUpdate -ohjelmaa kutsutaan usein useammin kuin Päivitä.
Sitä voidaan kutsua useita kertoja kehystä kohden, jos kuvataajuus on pieni, eikä sitä voida kutsua lainkaan kehysten välillä, jos kuvataajuus on suuri. Kaikki fysiikan laskelmat ja päivitykset tapahtuvat heti FixedUpdate-ohjelman jälkeen. Kun sovellat liikelaskelmia FixedUpdate-sovelluksen sisällä, sinun ei tarvitse kertoa arvoja Time.deltaTimella.
FixedUpdate kutsutaan luotettavalla ajastimella, riippumatta kuvataajuus
.
Päivitys:
Päivitystä kutsutaan kerran kehystä kohti. Se on kehyspäivitysten tärkein työhevostoiminto.
LateUpdate:
LateUpdate kutsutaan kerran kehystä kohti, kun päivitys on valmis.
Kaikki päivityksessä suoritetut laskelmat valmistuvat, kun LateUpdate alkaa. LateUpdaten yleinen käyttö olisi seuraava kolmannen henkilön kamera. Jos panet hahmosi liikkumaan ja kääntymään päivityksen sisällä, voit suorittaa kaikki kameran liike- ja kiertolaskelmat LateUpdate-ohjelmassa. Tämä varmistaa, että merkki on siirtynyt kokonaan ennen kuin kamera seuraa sijaintiaan.
Kiinteän päivityksen, päivityksen ja myöhäisen päivityksen käyttö samanaikaisesti on turvallista.
using UnityEngine; using System.Collections; public class CheckFunctionExecutionOrder : MonoBehaviour { void FixedUpdate () { Debug.Log("FixedUpdate time :" + Time.deltaTime); } void Update () { Debug.Log("Update time :" + Time.deltaTime); } void LateUpdate() { Debug.Log("late Update time :" + Time.deltaTime); } }
vastaus
Ne ovat kaikki käynnissä samanaikaisesti, skriptisi vain tekevät tavaraa näihin toimintoihin. Päivitys kutsutaan kerran kehystä kohti ja FixedUpdate kutsutaan kerran jokaiseen ”fysiikan päivitykseen” (joka on kerran kiinteässä ajassa, jota voit säätää).
Siellä on myös LateUpdate , jos haluat tiettyjen toimintojen suorittamisen jälkeen kyseisen viitekehyksen päivitystoiminto. Täydellinen luettelo viesteistä on MonoBehaviour -viitteessä.
Täällä on linkki Tätä kattava Unity-opetusohjelma .
Kommentit
Vastaa
Päivitä (), FixedUpdate () ja LateUpdate () on turvallista käyttää yhdessä komentosarjassa. Ainakin minulla ei ole mitään ongelmia.Käytän yleensä Update (): tä pääsilmukkoihini, FixedUpdate (): tä esimerkiksi fysiikkaan ja LateUpdate (: ta) silmukoihin, jotka haluan suorittaa kaiken muun jälkeen.