Atualização vs LateUpdate

Em Unity, as funções Atualizar e LateUpdate são comumente usadas para atualizar o comportamento ​​de objetos em uma cena e, embora sirvam a propósitos semelhantes, existem diferenças importantes entre os dois.

'Update'

A função 'Update' é chamada uma vez por quadro e é usada para a maioria das tarefas de uso geral, como input ​​manipulação e objeto movimento. É importante observar que 'Update' não depende da taxa de quadros, o que significa que pode variar no tempo de execução dependendo do desempenho.

void Update()
{
    // Input handling
    float horizontalInput = Input.GetAxis("Horizontal");
    float verticalInput = Input.GetAxis("Vertical");
    
    // Movement
    Vector3 movement = new Vector3(horizontalInput, 0, verticalInput);
    transform.Translate(movement * speed * Time.deltaTime);
    
    // General-purpose tasks
    // ...
}

No exemplo acima, recuperamos a entrada dos eixos horizontal e vertical e a usamos para controlar o movimento do objeto. O método 'Translate' é usado para mover o objeto na direção especificada a uma velocidade constante. Tarefas de uso geral também podem ser executadas na função 'Update'.

LateUpdate

A função LateUpdate também é chamada uma vez por quadro, mas é executada após todas as funções 'Update' foram concluídos. É comumente usado para garantir que outras atualizações, como objeto movimento ​​ou animação, sejam concluídas antes de executar ações adicionais que dependem dessas atualizações.

void LateUpdate()
{
    // Camera follow
    Vector3 desiredPosition = target.position + offset;
    transform.position = Vector3.Lerp(transform.position, desiredPosition, smoothness);
    
    // Additional actions after other updates
    // ...
}

No exemplo acima, a função LateUpdate é usada para seguir suavemente um objeto alvo com uma câmera. Ele garante que a posição da câmera seja atualizada após o movimento do alvo ter sido processado nas funções 'Update'. Ações adicionais que dependem da posição atualizada do objeto também podem ser executadas em LateUpdate.

'Update' vs LateUpdate

Principais diferenças entre as funções 'Update' e LateUpdate:

  • 'Update' é chamado primeiro no quadro, seguido por LateUpdate.
  • 'Update' é adequado para a maioria das tarefas de uso geral, incluindo manipulação de entrada, objeto movimento ​​e operações não relacionadas à câmera.
  • LateUpdate é comumente usado para tarefas relacionadas à câmera, como seguir ​​suavemente um objeto de destino ou executar ações dependentes de outras atualizações.
  • O uso de LateUpdate ajuda a garantir que as ações dependentes de outras atualizações ocorram após o processamento dessas atualizações.

Conclusão

Vale a pena notar que tanto 'Update' quanto LateUpdate podem coexistir no mesmo script, permitindo separar diferentes tipos de atualizações. Compreender as diferenças e utilizar a função apropriada em cada contexto ajuda a alcançar o comportamento desejado nos projetos Unity.