Оновлення проти FixedUpdate проти LateUpdate

Важливою частиною 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);
    }

На винос

Кожна функція оновлення має власний варіант використання.

Використовуйте їх у поєднанні для реалізації різноманітних сценаріїв.

Рекомендовані статті
Посібник з моноповедінки в Unity
Awake проти Start
Використання контролера Runtime Animator в Unity
Список корисних ключових слів Unity в C#
Реалізація введення з клавіатури та миші в Unity
Розуміння функцій і викликів методів
Вступ до мови сценаріїв Unity C#