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

Recorder.elapsedNanoseconds

建议修改

成功!

感谢您帮助我们提升 Unity 文档的质量。尽管我们无法接受所有提交建议,但我们会仔细阅读每位用户建议的修改,并根据情况进行适当更新。

关闭

提交失败

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

关闭

取消

public long elapsedNanoseconds;

描述

上一个帧中 Begin/End 区块的累积时间(以纳秒为单位)。(只读)

持久性操作(例如预加载线程上的操作)不一定会在单帧内结束。在这种情况下,elapsedNanoseconds 会计算至帧结束为止,这样您始终可以看到这些操作的活动。

using UnityEngine;
using UnityEngine.Profiling;

public class ExampleClass : MonoBehaviour { Recorder behaviourUpdateRecorder; void Start() { behaviourUpdateRecorder = Recorder.Get("BehaviourUpdate"); behaviourUpdateRecorder.enabled = true; }

void Update() { if (behaviourUpdateRecorder.isValid) Debug.Log("BehaviourUpdate time: " + behaviourUpdateRecorder.elapsedNanoseconds); } }

使用 elapsedNanoseconds 可以获取使用 ProfilerMarker.Auto 标记的代码的时间。

using UnityEngine;
using UnityEngine.Profiling;

public class Example { public static void TimeSynchronousMethodWithMarkers() { var recorder = Recorder.Get("MyMarker"); recorder.enabled = true; // Start measurements

// Call method which uses MyMarker // MyMethod();

recorder.enabled = false; // Stops measurements and makes data available immediately Debug.Log("MyMarker total time, ns: " + recorder.elapsedNanoseconds); } }

在不涉及帧更改的同步测量中,elapsedNanoseconds 仅在禁用 Recorder 后才变为非零值。