Mise à jour vs mise à jour fixe

Dans Unity, les fonctions Update et FixedUpdate sont utilisées pour mettre à jour le comportement d'objets dans une scène, et bien qu'ils servent à des fins similaires, il existe des différences essentielles entre les deux.

'Update'

La fonction 'Update' est appelée une fois par image et est idéale pour gérer entrée, mettre à jour objet positions et effectuer la plupart des tâches générales. Il ne dépend pas de la fréquence d'images, ce qui signifie que son temps d'exécution peut varier en fonction des performances.

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

Dans l'exemple ci-dessus, nous récupérons l'entrée des axes horizontal et vertical et l'utilisons pour contrôler le mouvement de l'objet. La méthode 'Translate' est utilisée pour déplacer l'objet dans la direction spécifiée à une vitesse constante. Les tâches générales peuvent également être effectuées au sein de la fonction 'Update'.

'FixedUpdate'

La fonction 'FixedUpdate' est appelée à des intervalles de temps fixes, ce qui la rend adaptée à la gestion des calculs liés à la physique. Il est indépendant de la fréquence d'images, garantissant un comportement cohérent sur différents appareils et fréquences d'images.

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

Dans l'exemple ci-dessus, nous appliquons une force constante à un composant Rigidbody dans la direction avant de l'objet. L'utilisation de 'FixedUpdate' garantit que les calculs physiques se produisent à un rythme fixe, quelle que soit la fréquence d'images. Ceci est important pour maintenir une simulation physique stable.

'Update' contre 'FixedUpdate'

Principales différences entre les fonctions 'Update' et 'FixedUpdate':

  • 'Update' est appelé une fois par image, tandis que FixedUpdate est appelé à intervalles de temps fixes.
  • 'Update' dépend de la fréquence d'images, tandis que FixedUpdate est indépendant de la fréquence d'images.
  • 'Update' convient à la plupart des tâches à usage général, y compris la gestion des entrées, le déplacement d'objets et les opérations non liées à la physique.
  • FixedUpdate est spécialement conçu pour les calculs liés à la physique, tels que l'application de forces, l'ajustement des propriétés de Rigidbody et l'exécution d'autres opérations basées sur la physique.

Conclusion

Il est important de noter que 'Update' et 'FixedUpdate' peuvent coexister dans le même script, ce qui permet de séparer le code lié à la physique des autres codes à usage général. Comprendre les différences et utiliser la fonction appropriée dans chaque contexte permet d'assurer un comportement fluide et cohérent dans les Unity projets.

Articles suggérés
Guide du MonoBehavior dans Unity
Mise en œuvre de la saisie au clavier et à la souris dans Unity
Utilisation du contrôleur Runtime Animator dans Unity
Liste Unity de mots clés utiles en C#
Comprendre les fonctions et les appels de méthode
Introduction au langage de script Unity C#
Création d'instructions conditionnelles (if-else) dans Unity Code