Slik bruker du oppdatering i Unity

Oppdateringsfunksjonen i Unity er en innebygd funksjon som kalles én gang per frame og brukes ofte til å oppdatere tilstanden til spillobjekter og utføre annen spilllogikk. Nedenfor er noen tips om hvordan du bruker Oppdater-funksjonen i Unity-koden.

1. 'Time.deltaTime'

Siden oppdateringsfunksjoner kalles én gang per ramme, er det viktig å bruke 'Time.deltaTime' for å sikre at oppdateringene er uavhengige av bildefrekvens. Dette betyr at oppdateringene vil kjøre med samme hastighet uavhengig av bildefrekvensen, noe som sikrer at spillet oppfører seg konsekvent på tvers av forskjellig maskinvare.

For eksempel, for å flytte et objekt med konstant hastighet, må bevegelsesvektoren multipliseres med 'Time.deltaTime' for å sikre at objektet beveger seg med samme hastighet uavhengig av bildefrekvensen:

void Update() {
    transform.position += Vector3.forward * speed * Time.deltaTime;
}

2. Unngå dyre beregninger

Som nevnt tidligere, siden oppdateringen kalles én gang per ramme, er det viktig å unngå å utføre dyre beregninger som kan påvirke ytelsen. For eksempel, hvis det er en kompleks algoritme som tar lang tid å utføre, kan det være bedre å flytte den til en egen tråd eller dele den opp i mindre biter som kan kjøres over flere rammer.

3. Bruk FixedUpdate for fysikk

Når du jobber med fysikk i spillet, anbefales det å bruke funksjonen FixedUpdate i stedet for Oppdater. FixedUpdate kalles med en fast hastighet, som bestemmes av fysikktidstrinnet, og er designet for å håndtere fysikkberegninger som kollisjonsdeteksjon og stiv kropp-bevegelse. Å bruke FixedUpdate for fysikkberegninger kan bidra til å sikre at spillfysikken oppfører seg konsekvent og nøyaktig på tvers av forskjellige bildefrekvenser.

4. Vurder å bruke Coroutines

For å utføre en oppdatering som ikke er knyttet til bildefrekvensen, kan det være bedre å bruke en Coroutine i stedet for en oppdatering. Coroutines gir funksjonaliteten til å pause utførelsen av en funksjon i en spesifisert tidsperiode, og deretter tillater den å utføre tidsbaserte oppdateringer som å skape fiender eller forsinke en animasjon.

IEnumerator SpawnEnemy() {
    while (true) {
        Instantiate(enemyPrefab, spawnPoint.position, Quaternion.identity);
        yield return new WaitForSeconds(spawnDelay);
    }
}

For å starte en Coroutine ring bare StartCoroutine én gang, slik:

StartCoroutine(SpawnEnemy());

For å stoppe en Coroutine, bruk StopCoroutine-metoden som tar en referanse til en Coroutine, IEnumerator eller et metodenavn (å lagre en referanse fra en StartCoroutine og bruke den for å stoppe er en foretrukket tilnærming siden den vet nøyaktig hvilken forekomst av en Coroutine som skal stoppes ):

Coroutine a = StartCoroutine(SpawnEnemy());

StopCoroutine(a);

Konklusjon

Å følge disse beste fremgangsmåtene vil sikre at oppdateringsfunksjonene brukes riktig i Unity-skriptene.

Foreslåtte artikler
Optimaliseringstips for Unity
Unity Optimaliser spillet ditt ved å bruke Profiler
Billboard-generatoren for Unity
Forbedre ytelsen til et mobilspill i Unity
Unity lydklipp importinnstillinger for best ytelse
Slik bruker du termisk pasta på en CPU eller GPU
Slik løser du oppstartsproblemer i Windows 10 ved hjelp av en USB-stasjon