Оновлення проти 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);
}
На винос
Кожна функція оновлення має власний варіант використання.
Використовуйте їх у поєднанні для реалізації різноманітних сценаріїв.