Time deltatime unity что это
Time.deltaTime
Success!
Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.
Submission failed
For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.
Description
The completion time in seconds since the last frame (Read Only).
This property provides the time between the current and previous frame.
Use Time.deltaTime to move a GameObject in the y direction, at n units per second. Multiply n by Time.deltaTime and add to the y component.
MonoBehaviour.FixedUpdate uses fixedDeltaTime instead of deltaTime. Do not rely on Time.deltaTime inside MonoBehaviour.OnGUI. Unity can call OnGUI multiple times per frame. The application use the same deltaTime value per call.
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
Is something described here not working as you expect it to? It might be a Known Issue. Please check with the Issue Tracker at
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
You’ve told us this page needs code samples. If you’d like to help us further, you could provide a code sample, or tell us about what kind of code sample you’d like to see:
You’ve told us there are code samples on this page which don’t work. If you know how to fix it, or have something better we could use instead, please let us know:
You’ve told us there is information missing from this page. Please tell us more about what’s missing:
You’ve told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You’ve told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You’ve told us there is a spelling or grammar error on this page. Please tell us what’s wrong:
You’ve told us this page has a problem. Please tell us more about what’s wrong:
Thanks for helping to make the Unity documentation better!
Is something described here not working as you expect it to? It might be a Known Issue. Please check with the Issue Tracker at issuetracker.unity3d.com.
Copyright © 2020 Unity Technologies. Publication Date: 2021-02-24.
Какую основную функцию выполняет Time.deltaTime в Unity?
Я учусь разработке игр в Unity. Недавно я получил структуру для функции Time.deltaTime во время кода, который я изучал из учебников. Я искал об этом для лучшего понимания, но не понял основной цели его использования, как это объясняется на профессиональном уровне. Короче говоря, я хочу несколько простых объяснений. Итак, я могу понять из этого.
3 ответа
Рендеринг и выполнение скрипта требует времени. Это отличается каждый кадр. Если вы хотите
Чтобы обрабатывать кадры разной длины, вы получаете «Time.deltaTime». В Update он сообщит вам, сколько секунд прошло (обычно это доля, например, 0,00132), чтобы закончить последний кадр.
Если вы теперь переместите объект из A в B, используя этот код:
Это будет двигаться 0,05 единиц на кадр. После 100 кадров он переместился на 5 единиц.
Таким образом, вашему объекту потребуется 1-5 секунд, чтобы пройти это расстояние.
Но если вы сделаете это:
Он будет двигаться 5 единиц в 1 секунду. Независимо от частоты кадров. Потому что, если у вас есть 10000 кадров в секунду, deltaTime будет очень очень маленьким, поэтому он будет перемещаться лишь очень маленьким битом в каждом кадре.
Примечание. В FixedUpdate() он технически не на 100% одинаков для каждого кадра, но вы должны действовать так, как будто он всегда равен 0.02f или каков бы ни был установлен физический интервал. Независимо от частоты кадров Time.deltaTime в FixedUpdate() вернет fixedDeltaTime
Это свойство предоставляет время между текущим и предыдущим кадром.
Вы можете использовать это, например, для проверки частоты кадров. Также, как сказано здесь
Time deltatime unity что это
class in UnityEngine
Success!
Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.
Submission failed
For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.
Description
Provides an interface to get time information from Unity.
For more information, see the following pages in the User Manual:
Static Properties
captureDeltaTime | Slows your application’s playback time to allow Unity to save screenshots in between frames. |
captureFramerate | The reciprocal of Time.captureDeltaTime. |
deltaTime | The interval in seconds from the last frame to the current one (Read Only). |
fixedDeltaTime | The interval in seconds at which physics and other fixed frame rate updates (like MonoBehaviour’s FixedUpdate) are performed. |
fixedTime | The time since the last FixedUpdate started (Read Only). This is the time in seconds since the start of the game. |
fixedTimeAsDouble | The double precision time since the last FixedUpdate started (Read Only). This is the time in seconds since the start of the game. |
fixedUnscaledDeltaTime | The timeScale-independent interval in seconds from the last MonoBehaviour.FixedUpdate phase to the current one (Read Only). |
fixedUnscaledTime | The timeScale-independent time at the beginning of the last MonoBehaviour.FixedUpdate phase (Read Only). This is the time in seconds since the start of the game. |
fixedUnscaledTimeAsDouble | The double precision timeScale-independent time at the beginning of the last FixedUpdate (Read Only). This is the time in seconds since the start of the game. |
frameCount | The total number of frames since the start of the game (Read Only). |
inFixedTimeStep | Returns true if called inside a fixed time step callback (like MonoBehaviour’s FixedUpdate), otherwise returns false. |
maximumDeltaTime | The maximum value of Time.deltaTime in any given frame. This is a time in seconds that limits the increase of Time.time between two frames. |
maximumParticleDeltaTime | The maximum time a frame can spend on particle updates. If the frame takes longer than this, then updates are split into multiple smaller updates. |
realtimeSinceStartup | The real time in seconds since the game started (Read Only). |
realtimeSinceStartupAsDouble | The real time in seconds since the game started (Read Only). Double precision version of realtimeSinceStartup. |
smoothDeltaTime | A smoothed out Time.deltaTime (Read Only). |
time | The time at the beginning of this frame (Read Only). |
timeAsDouble | The double precision time at the beginning of this frame (Read Only). This is the time in seconds since the start of the game. |
timeScale | The scale at which time passes. |
timeSinceLevelLoad | The time since this frame started (Read Only). This is the time in seconds since the last non-additive scene has finished loading. |
timeSinceLevelLoadAsDouble | The double precision time since this frame started (Read Only). This is the time in seconds since the last non-additive scene has finished loading. |
unscaledDeltaTime | The timeScale-independent interval in seconds from the last frame to the current one (Read Only). |
unscaledTime | The timeScale-independent time for this frame (Read Only). This is the time in seconds since the start of the game. |
unscaledTimeAsDouble | The double precision timeScale-independent time for this frame (Read Only). This is the time in seconds since the start of the game. |
Is something described here not working as you expect it to? It might be a Known Issue. Please check with the Issue Tracker at issuetracker.unity3d.com.
Copyright ©2021 Unity Technologies. Publication Date: 2021-12-03.
Какую основную функцию Time.deltaTime выполняет в Unity?
Как улучшить вашу сердечно-сосудистую систему, частоту сердечных сокращений, выносливость, выносливость и фитнес
Я изучаю разработку игр в Unity. Недавно я получил структуру функции Time.deltaTime во время кода, который я изучал из руководств. Я искал его для лучшего понимания, но не понял основную цель его использования, поскольку это объясняется профессиональным образом. Короче, мне нужно простое объяснение. Итак, я могу понять из этого.
Рендеринг и выполнение скрипта требует времени. Каждый кадр отличается. Если вы хотите
60 кадров в секунду, у вас не будет стабильных кадров в секунду, но будет разное количество времени на прохождение каждого кадра. Вы можете подождать, если вы работаете слишком быстро, но вы не можете пропустить рендеринг, если вы работаете медленнее, чем ожидалось.
Чтобы обрабатывать кадры разной длины, вы получаете «Time.deltaTime». В Update он сообщит вам, сколько секунд прошло (обычно это дробная часть, например 0,00132), чтобы закончить последний кадр.
Если вы теперь переместите объект из A в B с помощью этого кода:
Он будет перемещаться на 0,05 единицы за кадр. После 100 кадров он переместился на 5 единиц.
Таким образом, вашему объекту потребуется 1-5 секунд, чтобы переместиться на это расстояние.
Но если вы сделаете это:
он переместится на 5 единиц за 1 секунду. Независимо от частоты кадров. Потому что, если у вас 10000 кадров в секунду, deltaTime будет очень маленьким, поэтому он перемещается только на очень маленький бит за каждый кадр.
Примечание: в FixedUpdate() Технически это не на 100% то же самое в каждом кадре, но вы должны действовать так, как будто это всегда 0,02f или что бы вы ни установили для физического интервала. Независимо от частоты кадров, Time.deltaTime в FixedUpdate() вернет fixedDeltaTime
Итак, если мы просто скажем obj.transform.position += new Vector3(offset, 0, 0); в нашей функции обновления тогда obj пройдёт мимо offset единиц в направлении x каждый кадр, независимо от FPS.
Однако если мы вместо этого скажем obj.transform.position += new Vector3(offset * Time.deltaTime, 0, 0); тогда мы знаем, что obj поедет offset единиц каждую секунду, так как каждый кадр будет перемещать долю offset соответствует тому, сколько времени занял этот кадр.
Это свойство обеспечивает время между текущим и предыдущим кадрами.
Вы можете использовать это, например, для проверки частоты кадров. Также, как сказано здесь
Когда вы умножаете на Time.deltaTime в Unity?
Я понимаю, что Time.deltaTime используется для обеспечения независимости определенных действий от частоты кадров, но есть некоторые ситуации, когда неясно, является ли действие независимым от частоты кадров. Например:
Я видел решения для отдельных ситуаций, но было бы неплохо, если бы была простая интуиция, которая могла бы разрешить все эти ситуации.
2 ответа
Интуиция
Умножение на Time.deltaTime используется для того, чтобы мгновенная операция действовала непрерывно (или «плавно»).
Мгновенное срабатывание заставит определенное количество «перейти» к другому значению. Следующие операции являются мгновенными :
Напротив, следующие операции являются непрерывными :
Все вышеперечисленные операции применяются в течение всего кадра (по крайней мере, концептуально это происходит; то, что физическая система делает внутренне, выходит за рамки этого ответа). Чтобы проиллюстрировать это, Rigidbody.AddForce(1, ForceMode.Force) вызовет приложение силы в 1 ньютон к объекту для всего кадра; не будет резких скачков положения или скорости.
Пример 1: Взрыв
Пример 2: Переезд
Пример 3: Ускорение
Этот код применяет ускорение в течение всего кадра. Этот код также (на мой взгляд) чище и проще для понимания.
Вывод
Умножайте на Time.deltaTime только в том случае, если вы хотите, чтобы мгновенная операция выполнялась плавно в серии кадров.