Як використовувати оновлення в Unity

Функція Оновлення в Unity — це вбудована функція, яка викликається один раз за кадр і зазвичай використовується для оновлення стану об’єктів гри та виконання іншої ігрової логіки. Нижче наведено кілька порад щодо правильного використання функції Update у коді Unity.

1. 'Time.deltaTime'

Оскільки функції оновлення викликаються один раз на кадр, важливо використовувати 'Time.deltaTime', щоб гарантувати, що оновлення не залежать від частоти кадрів. Це означає, що оновлення виконуватимуться з однаковою частотою незалежно від частоти кадрів, забезпечуючи однакову роботу гри на різних апаратних засобах.

Наприклад, щоб об’єкт рухався з постійною швидкістю, вектор руху потрібно помножити на 'Time.deltaTime', щоб гарантувати, що об’єкт рухається з однаковою швидкістю незалежно від частоти кадрів:

void Update() {
    transform.position += Vector3.forward * speed * Time.deltaTime;
}

2. Уникайте дорогих розрахунків

Як згадувалося раніше, оскільки оновлення викликається один раз на кадр, важливо уникати виконання дорогих обчислень, які можуть вплинути на продуктивність. Наприклад, якщо існує складний алгоритм, виконання якого займає багато часу, можливо, краще перемістити його в окремий потік або розбити на менші фрагменти, які можна виконувати в кількох кадрах.

3. Використовуйте FixedUpdate для фізики

При роботі з фізикою в грі рекомендується використовувати функцію FixedUpdate замість Update. FixedUpdate викликається з фіксованою швидкістю, яка визначається кроком фізичного часу, і призначена для виконання фізичних обчислень, таких як виявлення зіткнень і рух твердого тіла. Використання FixedUpdate для обчислень фізики може допомогти переконатися, що фізика гри поводиться узгоджено та точно в різних частотах кадрів.

4. Розгляньте можливість використання співпрограм

Щоб виконати оновлення, яке не прив’язане до частоти кадрів, можливо, краще використовувати Coroutine замість оновлення. Співпрограми забезпечують функціональні можливості для призупинення виконання функції на певний проміжок часу, згодом дозволяючи їй виконувати оновлення на основі часу, як-от породження ворогів або затримка анімації.

IEnumerator SpawnEnemy() {
    while (true) {
        Instantiate(enemyPrefab, spawnPoint.position, Quaternion.identity);
        yield return new WaitForSeconds(spawnDelay);
    }
}

Щоб запустити Coroutine, просто викличте StartCoroutine один раз, наприклад:

StartCoroutine(SpawnEnemy());

Щоб зупинити Coroutine, використовуйте метод StopCoroutine, який приймає посилання на Coroutine, IEnumerator або ім’я методу (збереження посилання з StartCoroutine та використання його для зупинки є кращим підходом, оскільки він точно знає, який екземпляр Coroutine зупинити ):

Coroutine a = StartCoroutine(SpawnEnemy());

StopCoroutine(a);

Висновок

Дотримання цих найкращих практик забезпечить належне використання функцій оновлення в сценаріях Unity.

Рекомендовані статті
Unity Оптимізуйте свою гру за допомогою Profiler
Поради щодо оптимізації для Unity
Покращення продуктивності мобільної гри в Unity
Налаштування імпорту аудіокліпів Unity для найкращої продуктивності
Генератор білбордів для Unity
Як використовувати термозбіжну трубку
Як розгорнути та використовувати Windows Server Update Services (WSUS) у Windows 10