Como utilizar a atualização no Unity

A função Atualizar em Unity é uma função interna que é chamada uma vez por quadro e é comumente usada para atualizar o estado dos objetos do jogo e executar outra lógica do jogo. Abaixo estão algumas dicas sobre como utilizar corretamente a função Atualizar no código Unity.

1. 'Time.deltaTime'

Como as funções de atualização são chamadas uma vez por quadro, é importante usar 'Time.deltaTime' para garantir que as atualizações sejam independentes da taxa de quadros. Isso significa que as atualizações serão executadas na mesma taxa, independentemente da taxa de quadros, garantindo que o jogo se comporte de maneira consistente em diferentes hardwares.

Por exemplo, para mover um objeto a uma velocidade constante, o vetor de movimento precisa ser multiplicado por 'Time.deltaTime' para garantir que o objeto se mova na mesma velocidade, independentemente da taxa de quadros:

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

2. Evite cálculos caros

Conforme mencionado anteriormente, como Update é chamado uma vez por quadro, é importante evitar a execução de cálculos caros que possam afetar o desempenho. Por exemplo, se houver um algoritmo complexo que leva muito tempo para ser executado, pode ser melhor movê-lo para um thread separado ou dividi-lo em partes menores que podem ser executadas em vários quadros.

3. Use FixedUpdate para Física

Ao trabalhar com física no jogo, é recomendável usar a função FixedUpdate em vez de Atualizar. FixedUpdate é chamado a uma taxa fixa, que é determinada pela etapa de tempo da física e é projetada para lidar com cálculos físicos como detecção de colisão e corpo rígido movimento. Usar FixedUpdate para cálculos de física pode ajudar a garantir que a física do jogo se comporte de maneira consistente e precisa em diferentes taxas de quadros.

4. Considere o uso de corrotinas

Para executar uma atualização que não esteja vinculada à taxa de quadros, pode ser melhor usar uma Coroutine em vez de uma atualização. As corrotinas fornecem a funcionalidade de pausar a execução de uma função por um período de tempo especificado, permitindo subsequentemente que ela execute atualizações com base no tempo, como gerar inimigos ou atrasar uma animação.

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

Para iniciar uma Coroutine, basta chamar StartCoroutine uma vez, assim:

StartCoroutine(SpawnEnemy());

Para interromper uma Coroutine, use o método StopCoroutine que usa uma referência a uma Coroutine, IEnumerator ou um nome de método (armazenar uma referência de uma StartCoroutine e usá-la para parar é uma abordagem preferível, pois sabe exatamente qual instância de uma Coroutine interromper ):

Coroutine a = StartCoroutine(SpawnEnemy());

StopCoroutine(a);

Conclusão

Seguir essas práticas recomendadas garantirá que as funções de atualização sejam utilizadas adequadamente nos Unityscripts.

Artigos sugeridos
Dicas de otimização para Unity
Unity otimize seu jogo usando o Profiler
Melhorando o desempenho de um jogo para celular no Unity
Configurações de importação de clipe de áudio do Unity para obter o melhor desempenho
O gerador de outdoors para Unity
Como corrigir problemas de inicialização no Windows 10 usando uma unidade USB
Implementando taxa de atualização personalizada no Unity