Actualización vs Actualización Fija

En Unity, las funciones Actualizar y FixedUpdate se utilizan 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 cuadro y es ideal para manejar input, actualizar objeto posiciones, y realizar la mayoría de las tareas de propósito general. No depende de la velocidad de fotogramas, lo que significa que puede variar en el tiempo de ejecución según el 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'.

FixedUpdate

La función FixedUpdate se llama a intervalos de tiempo fijos, lo que la hace adecuada para manejar cálculos relacionados con la física. Es independiente de la velocidad de fotogramas, lo que garantiza un comportamiento uniforme en diferentes dispositivos y velocidades de fotogramas.

void FixedUpdate()
{
    // Physics calculations
    rb.AddForce(transform.forward * forceMagnitude);
    
    // Other physics-related tasks
    // ...
}

En el ejemplo anterior, aplicamos una fuerza constante a un componente Rigidbody en la dirección de avance del objeto. El uso de FixedUpdate garantiza que los cálculos físicos se produzcan a una velocidad fija, independientemente de la velocidad de fotogramas. Esto es importante para mantener una simulación física estable.

'Update' frente a FixedUpdate

Diferencias clave entre las funciones 'Update' y FixedUpdate:

  • 'Update' se llama una vez por cuadro, mientras que FixedUpdate se llama a intervalos de tiempo fijos.
  • 'Update' depende de la velocidad de fotogramas, mientras que FixedUpdate es independiente de la velocidad de fotogramas.
  • 'Update' es adecuado para la mayoría de las tareas de uso general, incluido el manejo de entradas, el movimiento de objetos y las operaciones no relacionadas con la física.
  • FixedUpdate está diseñado específicamente para cálculos relacionados con la física, como la aplicación de fuerzas, el ajuste de las propiedades de Rigidbody y la realización de otras operaciones basadas en la física.

Conclusión

Es importante tener en cuenta que 'Update' y FixedUpdate pueden coexistir en el mismo script, lo que permite separar el código relacionado con la física de otro código de propósito general. Comprender las diferencias y utilizar la función adecuada en cada contexto ayuda a garantizar un comportamiento fluido y coherente en los proyectos Unity.

Artículos sugeridos
Guía de MonoBehaviour en Unity
Usando el controlador Runtime Animator en Unity
Lista de Unity de palabras clave útiles en C#
Implementación de entrada de teclado y mouse en Unity
Comprensión de funciones y llamadas a métodos
Introducción al lenguaje de secuencias de comandos Unity C#
Creación de declaraciones condicionales (if-else) en el código de Unity