Unity 6.3
0 онлайн 75 гостей 3 в системе
Вход

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; } } }