Time.realtimeSinceStartupAsDouble
Declaration
public static double realtimeSinceStartupAsDouble;Описание
Реальное время в секундах с момента начала игры (только для чтения). Версия с двойной точностью Time.realtimeSinceStartup.
Это свойство представляет собой время в секундах с момента запуска приложения и не является постоянным, если вызывать его несколько раз в кадре. Time.timeScale почти во всех случаях, использование realtimeSinceStartupAsDouble выше realtimeSinceStartup. realtimeSinceStartupAsDouble обеспечивает большую точность, особенно в течение длительных периодов реального времени.
В большинстве случаев использования, использование Time.time, Time.timeAsDouble, Time.unscaledTime, или Time.unscaledTimeAsDouble вместо этого свойства. Однако realtimeSinceStartupAsDouble полезно, если вы хотите установить timeScale в ноль, чтобы приостановить приложение, но вы все равно хотите измерять время. В скриптах редактора вы также можете использовать realtimeSinceStartupAsDouble для измерения времени, пока Редактор приостановлен.
realtimeSinceStartupAsDouble возвращает время, сообщенное системным таймером. В зависимости от платформы и оборудования, оно может сообщать одно и то же время даже в нескольких последовательных кадрах. Если вы делите что-то на разницу во времени, учтите это (например, разница во времени может стать нулевым). XR, и мобильных платформах возвращаемое значение включает время, прошедшее, пока система находилась в режиме сна. На консольных платформах это поведение отличается. Дополнительные сведения см. в документации по конкретной платформе.
NOTE: Существует известная проблема где realtimeSinceStartup и realtimeSinceStartupAsDouble return incorrect values when using OnDestroy@@.
using UnityEngine; using System.Collections;
// An FPS counter. // It calculates frames/second over each updateInterval, // so the display does not keep changing wildly. public class ExampleClass : MonoBehaviour { public float updateInterval = 0.5F; private double lastInterval; private int frames = 0; private float fps; void Start() { lastInterval = Time.realtimeSinceStartupAsDouble; frames = 0; }
void OnGUI() { GUILayout.Label("" + fps.ToString("f2")); }
void Update() { ++frames; double timeNow = Time.realtimeSinceStartupAsDouble; if (timeNow > lastInterval + updateInterval) { fps = (float)(frames / (timeNow - lastInterval)); frames = 0; lastInterval = timeNow; } } }