Во-первых, я хочу упомянуть, что я делаю свой первый проект когда-либо в движке Unity, поэтому проблема может быть довольно глупой. Насколько я знаю, Time.deltaTime и Time.fixedDeltaTime сохраняют приблизительное время между кадрами (графика и физика). Я хотел реализовать простой счетчик fps для моей игры. Функция написана ниже:Что происходит с deltaTime в Unity?
void FPS_Counter()
{
float frequency_physics = 1f/Time.fixedDeltaTime;
float frequency_graphics = 1f/Time.deltaTime;
fps.text = "Phys: " + frequency_physics.ToString("N0") + "\n" + "Graph: " + frequency_graphics.ToString("N0");
}
FPS_Counter() вызывается в Update(). Сценарий всегда выводит значения 50 [hz] как для фиксированного, так и для «нормального» времени дельта. Похоже, что частота блокируется на 50 кадров в секунду. Это нормальное поведение? Блокирует ли Unity вызов FixedUpdate() и update() на 50 Гц? Если да, могу ли я изменить это значение где-нибудь, чтобы узнать, сколько fps я могу получить?
Если у вас включен VSync, и скорость обновления физического моделирования установлена на 0.02ms (по умолчанию), то ожидаются такие результаты. – UnholySheep
fixedDeltaTime всегда будет 0.02f по умолчанию. Time.DeltaTime, однако, будет меняться в зависимости от времени обработки каждого кадра :) –
См. Руководство по [Time Manager] (https://docs.unity3d.com/Manual/class-TimeManager.html) и [Настройки качества] (https://docs.unity3d.com/Manual/class-QualitySettings.html) о том, как изменить их – UnholySheep