游戏开始后以秒为单位的实时时间(只读)。
这是应用程序启动后以秒为单位的时间,如果在一帧中多次调用,它不是恒定的。 Time.timeScale 不影响此属性。
在几乎所有情况下,您都应该使用 Time.time 或 Time.unscaledTime。如果您确实需要使用 realtimeSinceStartup
,在大多数情况下,您应该使用 Time.realtimeSinceStartupAsDouble 以获得更高的精度。
如果您想将 Time.timeScale 设置为零以暂停应用程序,但仍然希望能够以某种方式测量时间,则使用 realtimeSinceStartup
很有用。在编辑器脚本中,您还可以使用 realtimeSinceStartup
在编辑器暂停时测量时间。realtimeSinceStartup
返回系统计时器报告的时间。根据平台和硬件的不同,它可能会报告相同的时间,即使是在连续的几帧中。如果您要将某些东西除以时间差,请考虑这一点(例如,时间差可能会变为零)。
注意:存在一个 已知问题,其中 realtimeSinceStartup
在使用 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; private float fps; void Start() { lastInterval = Time.realtimeSinceStartup; frames = 0; }
void OnGUI() { GUILayout.Label("" + fps.ToString("f2")); }
void Update() { ++frames; float timeNow = Time.realtimeSinceStartup; if (timeNow > lastInterval + updateInterval) { fps = (float)(frames / (timeNow - lastInterval)); frames = 0; lastInterval = timeNow; } } }