版本:Unity 6 (6000.0)
语言English
  • C#

时间.realtimeSinceStartupAsDouble

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。尽管我们无法接受所有提交,但我们会阅读用户建议的每处更改并进行适用的更新。

关闭

提交失败

由于某些原因,您建议的更改无法提交。请在几分钟后<a>重试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

公共 static 双精度 realtimeSinceStartupAsDouble;

说明

从游戏开始以来(只读)的实时秒数。realtimeSinceStartup 的双精度版本。

它比浮点或单精度值提供更高的精度,尤其是在较长的实际时间段内。在几乎所有情况下,使用 realtimeSinceStartupAsDouble 等同于 realtimeSinceStartup。在几乎所有情况下,您都可并且应该改用 Time.timeAsDouble

如果您要将 Time.timeScale 设置为零以暂停应用程序,但仍希望以某种方式测量时间,那么使用 realtimeSinceStartupAsDouble 很有用。在编辑器脚本中,您还可以使用 realtimeSinceStartupAsDouble 来测量编辑器暂停时的时间。

realtimeSinceStartupAsDouble 以系统计时器报告的时间返回时间。根据平台和硬件的不同,即使在连续几帧中,它也可能会报告相同的时间。如果您将某个内容除以时间差,请考虑这一点(例如,时间差可能会变为零)。

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