Actualización frente a actualización tardía

En Unity, las funciones Actualizar y LateUpdate se usan comúnmente para actualizar el comportamiento ​​de objetos en una escena, y si bien tienen propósitos similares, existen diferencias clave entre los dos.

'Update'

La función 'Update' se llama una vez por marco y se usa para la mayoría de las tareas de uso general, como input ​​manejo y objeto movimiento. Es importante tener en cuenta que 'Update' no depende de la velocidad de fotogramas, lo que significa que puede variar en el tiempo de ejecución dependiendo de rendimiento.

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
    // ...
}

En el ejemplo anterior, recuperamos información de los ejes horizontal y vertical y la usamos para controlar el movimiento del objeto. El método 'Translate' se utiliza para mover el objeto en la dirección especificada a una velocidad constante. Las tareas de propósito general también se pueden realizar dentro de la función 'Update'.

LateUpdate

La función LateUpdate también se llama una vez por fotograma, pero se ejecuta después de todas las funciones 'Update' se han completado. Se usa comúnmente para garantizar que otras actualizaciones, como el objeto movimiento ​​o la animación, hayan finalizado antes de realizar acciones adicionales que dependen de esas actualizaciones.

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

En el ejemplo anterior, la función LateUpdate se usa para seguir suavemente un objeto de destino con una cámara. Garantiza que la posición de la cámara se actualice después de que se haya procesado el movimiento del objetivo en las funciones 'Update'. También se pueden realizar acciones adicionales que dependen de la posición actualizada del objeto dentro de LateUpdate.

'Update' frente a LateUpdate

Diferencias clave entre las funciones 'Update' y LateUpdate:

  • 'Update' se llama primero en el cuadro, seguido de LateUpdate.
  • 'Update' es adecuado para la mayoría de las tareas de propósito general, incluido el manejo de entrada, el objeto movimiento ​​y las operaciones no relacionadas con la cámara.
  • LateUpdate se usa comúnmente para tareas relacionadas con la cámara, como seguir ​​sin problemas un objeto de destino o realizar acciones que dependen de otras actualizaciones.
  • El uso de LateUpdate ayuda a garantizar que las acciones que dependen de otras actualizaciones ocurran después de que se hayan procesado esas actualizaciones.

Conclusión

Vale la pena señalar que tanto 'Update' como LateUpdate pueden coexistir en un mismo script, permitiendo separar diferentes tipos de actualizaciones. Comprender las diferencias y utilizar la función apropiada en cada contexto ayuda a lograr el comportamiento deseado en los Unity proyectos.

Artículos sugeridos
Actualización frente a Actualización fija frente a Actualización tardía
Implementación de una tasa de actualización personalizada en Unity
Actualización vs Actualización Fija
Guía de MonoBehaviour en Unity
Métodos de ofuscación de Unity y protección anti-piratería
Script para capturar objetos en Unity
Creando un GrabPack en Unity inspirado en Poppy Playtime