2016-12-25 3 views
0

Во-первых, я хочу упомянуть, что я делаю свой первый проект когда-либо в движке 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 я могу получить?

+0

Если у вас включен VSync, и скорость обновления физического моделирования установлена ​​на 0.02ms (по умолчанию), то ожидаются такие результаты. – UnholySheep

+0

fixedDeltaTime всегда будет 0.02f по умолчанию. Time.DeltaTime, однако, будет меняться в зависимости от времени обработки каждого кадра :) –

+0

См. Руководство по [Time Manager] (https://docs.unity3d.com/Manual/class-TimeManager.html) и [Настройки качества] (https://docs.unity3d.com/Manual/class-QualitySettings.html) о том, как изменить их – UnholySheep

ответ

0

Могло быть много причин, по которым FPS блокируется с удельной скоростью. Однако переменная Time.deltaFixedTime всегда блокируется значением spesific update. По умолчанию это: 0,02 с, между каждым фиксированным обновлением.

Если вы хотите счетчик FPS для отладки, я могу дать вам refrence к этому: http://wiki.unity3d.com/index.php?title=FramesPerSecond

Причины того, почему фреймрейт заблокирован, может быть, как сказал @UnholySheep, Vsync, компьютерные ограничения (хотя он скорее всего, подпрыгнет) и некоторые другие причины.

https://docs.unity3d.com/Manual/class-QualitySettings.html Вот ссылка, где вы можете отключить VSync, если он окажется включенным.

+0

IIRC VSync Count по умолчанию установлен на «Every VBlank» (но я не использовал Unity через некоторое время, поэтому я не уверен на 100%) – UnholySheep

+0

Проверено, может подтвердить. –