Cum să utilizați Actualizarea în Unity
Funcția Actualizare din Unity este o funcție încorporată care este apelată o dată pe cadru și este folosită în mod obișnuit pentru a actualiza starea obiectelor de joc și pentru a efectua altă logică de joc. Mai jos sunt câteva sfaturi despre cum să utilizați corect funcția Update în codul Unity.
1. 'Time.deltaTime'
Deoarece funcțiile de actualizare sunt apelate o dată pe cadru, este important să utilizați 'Time.deltaTime' pentru a vă asigura că actualizările sunt independente de frecvența cadrelor. Aceasta înseamnă că actualizările se vor executa la aceeași frecvență, indiferent de frecvența de cadre, asigurându-se că jocul se comportă în mod constant pe diferite hardware-uri.
De exemplu, pentru a muta un obiect cu o viteză constantă, vectorul de mișcare trebuie înmulțit cu 'Time.deltaTime' pentru a se asigura că obiectul se mișcă cu aceeași viteză, indiferent de rata de cadre:
void Update() {
transform.position += Vector3.forward * speed * Time.deltaTime;
}
2. Evitați calculele costisitoare
După cum am menționat anterior, deoarece Actualizarea este apelată o dată pe cadru, este important să evitați efectuarea de calcule costisitoare care ar putea afecta performanța. De exemplu, dacă există un algoritm complex care durează mult timp pentru a se executa, ar putea fi mai bine să-l mutați într-un fir separat sau să îl împărțiți în bucăți mai mici care pot fi executate pe mai multe cadre.
3. Folosiți FixedUpdate pentru fizică
Când lucrați cu fizica în joc, este recomandat să utilizați funcția FixedUpdate în loc de Actualizare. FixedUpdate este apelat la o rată fixă, care este determinată de pasul de timp al fizicii și este conceput pentru a gestiona calcule fizice precum detectarea coliziunilor și mișcarea corp rigid. Utilizarea FixedUpdate pentru calculele fizice vă poate ajuta să vă asigurați că fizica jocului se comportă în mod consecvent și precis la diferite rate de cadre.
4. Luați în considerare utilizarea Coroutines
Pentru a efectua o actualizare care nu este legată de rata de cadre, ar putea fi mai bine să utilizați un Coroutine în loc de o actualizare. Coroutines oferă funcționalitatea de a întrerupe execuția unei funcții pentru o anumită perioadă de timp, permițându-i ulterior să efectueze actualizări bazate pe timp, cum ar fi generarea inamicilor sau întârzierea unei animații.
IEnumerator SpawnEnemy() {
while (true) {
Instantiate(enemyPrefab, spawnPoint.position, Quaternion.identity);
yield return new WaitForSeconds(spawnDelay);
}
}
Pentru a porni o Coroutine, pur și simplu apelați StartCoroutine o dată, astfel:
StartCoroutine(SpawnEnemy());
Pentru a opri o Coroutine, utilizați metoda StopCoroutine care ia o referință la o Coroutine, IEnumerator sau un nume de metodă (Stocarea unei referințe dintr-o StartCoroutine și utilizarea acesteia pentru a opri este o abordare de preferat, deoarece știe exact ce instanță a unei Coroutine să oprească ):
Coroutine a = StartCoroutine(SpawnEnemy());
StopCoroutine(a);
Concluzie
Urmând aceste bune practici se va asigura că funcțiile de actualizare sunt utilizate corespunzător în scripturile Unity.