Що таке Time в Unity C#?
Клас Time в Unity надає інформацію про час, яка корисна для керування ігровими процесами. Він використовується для отримання часу, що минув з моменту останнього кадру, загального часу з початку гри та інших даних. Ці дані дозволяють синхронізувати ігрові події та враховувати різницю в продуктивності різних пристроїв.
- deltaTime — час у секундах, що минув з моменту останнього кадру. Це значення часто використовується для забезпечення незалежності руху об'єктів від частоти кадрів.
- time — загальний час у секундах з початку гри.
- fixedDeltaTime — фіксований інтервал часу між викликами методу FixedUpdate.
- timeScale — дозволяє керувати швидкістю плину часу у грі (наприклад, для уповільнення).
- unscaledTime — час, який не залежить від значення timeScale. Корисний для створення інтерфейсів або обробки подій, незалежних від ігрового часу.
using UnityEngine;
public class TimeExample : MonoBehaviour
{
private float elapsedTime = 0f;
void Update()
{
// Збільшуємо загальний час з урахуванням deltaTime
elapsedTime += Time.deltaTime;
// Виводимо час у консоль кожні 5 секунд
if (elapsedTime >= 5f)
{
Debug.Log("Минуло 5 секунд");
elapsedTime = 0f; // Скидаємо таймер
}
}
void FixedUpdate()
{
// Використовуємо fixedDeltaTime для роботи з фізикою
Debug.Log("FixedUpdate викликано з інтервалом: " + Time.fixedDeltaTime);
}
}
Використання Time.deltaTime особливо корисне для руху об'єктів. Наприклад, переміщення персонажа на фіксовану відстань за секунду буде виглядати однаково незалежно від продуктивності пристрою. Це гарантує, що ігровий процес буде плавним та передбачуваним.
Властивість timeScale дозволяє уповільнювати або прискорювати час. Наприклад, для створення ефекту "слоумо" достатньо встановити Time.timeScale на значення менше 1. Це може бути корисним для динамічних моментів гри, таких як вибухи або уповільнення під час прицілювання.