Привіт, друзі! 👋 Із моєї практики, дуже часто на співбесідах розробників збиває питання про різницю між
Update(), LateUpdate() та FixedUpdate() в Unity. Давайте розберемося раз і назавжди в чому різниця між ними.🕹️ Update()
Update() викликається кожен кадр. Використовується для:- Обробки вводу користувача (натискання клавіш, рух миші).
- Логіки, що має виконуватись постійно.
Приклад:
void Update()
{
float move = Input.GetAxis("Horizontal");
transform.Translate(move * Time.deltaTime, 0, 0);
}
⏳ LateUpdate()
LateUpdate() викликається після всіх Update(). Використовується для:- Дій, що залежать від завершення
Update(), наприклад, слідкування камери за персонажем.Приклад:
void LateUpdate()
{
Camera.main.transform.position = transform.position + new Vector3(0, 5, -10);
}
⏱️ FixedUpdate()
FixedUpdate() викликається на регулярних інтервалах, незалежно від частоти кадрів. Використовується для:- Оновлення фізичних об'єктів (Rigidbody).
- Обробки фізичних взаємодій.
Приклад:
void FixedUpdate()
{
Rigidbody rb = GetComponent<Rigidbody>();
rb.AddForce(Vector3.forward * 10);
}
На що тут звернути увагу
-
FixedUpdate() - в даному випадку використовується просто щоб збити вас з толку і ви не зрозуміли про що питання.-
Update() - апдейт та і апдейт, все стандартно-
LateUpdate() - для дій після Update()... Але тут є прихований нюанс, котрий відкриє всю правду чи дійсно ви знаєте Monobehaviour Flow чи ні: між Update і LateUpdate відпрацьовує Mechanim ("аніматор"), і LateUpdate треба для того щоб після аніматора виправити позиції обʼєктів перед ренедром.Тепер ви готові блиснути на співбесіді! 💪
Але, спершу перечитайте ще раз про Monobehaviour Flow, щоб наступний раз не зафейлитись на таких контрольних питаннях 😅
---
🌱 Keep calm and grow