Обновление против фиксированного обновления против позднего обновления

Важной частью Unity API являются функции обновления, которые выполняются непрерывно.

Unity имеет три типа функций обновления: 'Update', FixedUpdate и LateUpdate.

'Update' против FixedUpdate

Разница между функциями 'Update' и FixedUpdate заключается в частоте их запуска.

Функция 'Update' запускается один раз за кадр, а FixedUpdate выполняется с постоянной скоростью, контролируемой значением "Fixed Timestamp" в 'Project Settings' -> 'Time'.

'Update' Функции подходят для программирования игровой логики, ввода данных игроком и практически любых нефизических вычислений.

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            //Space button has been pressed
        }    
    }

С другой стороны, функции FixedUpdate подходят для расчетов, основанных на физике, таких как Raycasting, приложение сил к твердым телам или любых вычислений, которые должны быть независимыми от частоты кадров.

    void FixedUpdate()
    {
        //Use Physics Raycast to detect if there any object in front
        RaycastHit hit;
        if(Physics.Raycast(transform.position, transform.forward, out hit, 10))
        {
            Debug.Log("Object '" + hit.transform.name + "' is currently in front of this object.");
        }
    }

Обновление против LateUpdate

'Update' и LateUpdate идентичны с точки зрения частоты запуска (оба выполняются один раз за кадр), но LateUpdate запускается после всех функций 'Update'.

Наконец, функция LateUpdate обычно используется для изменения костей анимированной модели (например, заставляет модель игрока смотреть вверх и вниз) или для реализации плавного следования камеры.

    void LateUpdate()
    {
        //Make camera tagged 'MainCamera' look at this object transform
        Camera mainCamera = Camera.main;
        mainCamera.transform.LookAt(transform);
    }

Еда на вынос

Каждая функция обновления имеет свой собственный вариант использования.

Используйте их в сочетании для реализации самых разных сценариев.

Рекомендуемые статьи
Руководство по MonoBehavior в Unity
Пробуждение против запуска
Использование контроллера Runtime Animator в Unity
Список полезных ключевых слов Unity в C#
Обновление против позднего обновления
Обновление против фиксированного обновления
Реализация ввода с клавиатуры и мыши в Unity