记录特定采样器产生的性能分析数据。
Recorder 在一帧内累积每个 Begin/End 对的经过时间。启用后,它会将采样器产生的 Begin 和 End 采样之间的 delta 时间相加。使用 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); } }
注意: Recorder 无论 Profiler 状态如何都会收集数据。启用 Recorder 后,每次其 Sampler 被命中时都会累积数据。此信息等同于您可以在 Profiler 窗口 的层次结构视图中看到的信息。
目前,采样器仅在编辑器和开发版 Player 中可用。使用 Recorder.isValid 验证 Recorder 是否可以收集数据。
Recorder 仅支持内部静态 Profiler 标签和由 CustomSampler 生成的标签。由脚本方法调用产生的动态内部标签和由 Profiler.BeginSample 生成的标签不受支持。
其他资源:Sampler,Recorder.isValid,Recorder.elapsedNanoseconds。
elapsedNanoseconds | 上一帧的 Begin/End 对的累积时间(以纳秒为单位)。(只读) |
enabled | 启用录制。 |
gpuElapsedNanoseconds | 获取一帧的累积 GPU 时间(以纳秒为单位)。Recorder 有三帧延迟,因此这将提供您访问此属性之前三帧的计时。(只读)。 |
gpuSampleBlockCount | 获取 GPU 在一帧内执行的 Begin/End 时间对的数量。Recorder 有三帧延迟,因此这将提供您访问此属性之前三帧的计时。(只读)。 |
isValid | 如果 Recorder 有效且可以收集数据,则返回 true。(只读) |
sampleBlockCount | 上一帧中调用 Begin/End 对的次数。(只读) |
CollectFromAllThreads | 配置 Recorder 以从所有线程收集样本。 |
FilterToCurrentThread | 配置 Recorder 以仅从当前线程收集数据。 |
Get | 使用此函数为特定 Profiler 标签获取 Recorder。 |