Что такое 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. Это может быть полезно для динамических моментов игры, таких как взрывы или замедление во время прицеливания.