提供对特定帧和线程的 Profiler 数据的访问。
使用 RawFrameDataView 检索特定帧的非结构化 Profiler 样本数据。
样本的顺序由它们在代码中生成的顺序决定。
RawFrameDataView 可以快速迭代帧中的所有样本,而无需任何内部分配。
using System; using Unity.Collections; using UnityEditor.Profiling; using UnityEditorInternal; using UnityEngine; using UnityEngine.Profiling;
public class Example { public static long GetGCAllocs(int frameIndex) { long totalGcAllocSize = 0;
int gcAllocMarkerId = FrameDataView.invalidMarkerId;
for (int threadIndex = 0;; ++threadIndex) { using (RawFrameDataView frameData = ProfilerDriver.GetRawFrameDataView(frameIndex, threadIndex)) { if (!frameData.valid) break;
if (gcAllocMarkerId == FrameDataView.invalidMarkerId) { gcAllocMarkerId = frameData.GetMarkerId("GC.Alloc"); if (gcAllocMarkerId == FrameDataView.invalidMarkerId) break; }
int sampleCount = frameData.sampleCount; for (int i = 0; i < sampleCount; ++i) { if (gcAllocMarkerId != frameData.GetSampleMarkerId(i)) continue;
long gcAllocSize = frameData.GetSampleMetadataAsLong(i, 0); totalGcAllocSize += gcAllocSize; } } }
return totalGcAllocSize; } }
invalidSampleIndex | 此常量定义一个样本索引,该索引与任何有效的 Profiler 样本都不匹配。 |
GetFlowEvents | 获取当前帧和线程的所有流事件。 |
GetSampleCallstack | 获取与指定样本关联的调用堆栈。 |
GetSampleCategoryIndex | 获取特定样本的 Profiler 标记类别。 |
GetSampleChildrenCount | 获取特定样本的子样本数量。 |
GetSampleChildrenCountRecursive | 获取特定样本的直接和间接子样本数量。 |
GetSampleFlags | 获取特定样本的 Profiler 标记标志。 |
GetSampleFlowEvents | 获取源自特定样本的流事件。 |
GetSampleMarkerId | 获取唯一标识样本名称的 Profiler 标记标识符。 |
GetSampleMetadataAsDouble | 将样本元数据值作为双精度浮点数获取。 |
GetSampleMetadataAsFloat | 将样本元数据值作为单精度浮点数获取。 |
GetSampleMetadataAsInt | 将样本元数据值作为整数获取。 |
GetSampleMetadataAsLong | 将样本元数据值作为长整数获取。 |
GetSampleMetadataAsSpan | 返回样本元数据的 Span<T> 表示形式。 |
GetSampleMetadataAsString | 将样本元数据值作为字符串获取。 |
GetSampleMetadataCount | 获取与特定样本关联的元数据计数。 |
GetSampleName | 获取特定样本的名称。 |
GetSampleStartTimeMs | 获取样本的开始时间。时间量以毫秒表示。 |
GetSampleStartTimeNs | 获取样本的开始时间。时间量以纳秒表示。 |
GetSampleTimeMs | 获取样本的持续时间。时间量以毫秒表示。 |
GetSampleTimeNs | 获取样本的持续时间。时间量以纳秒表示。 |
invalidMarkerId | 无效标记的标识符。 |
invalidThreadId | 此常量定义一个线程 ID,该 ID 与任何有效线程的 ID 都不匹配。 |
invalidThreadIndex | 此常量定义一个线程索引,该索引与任何有效线程的索引都不匹配。 |
frameFps | 帧的当前每秒帧数 (FPS)。 |
frameGpuTimeMs | GPU 帧时间量(以毫秒为单位)。 |
frameGpuTimeNs | GPU 帧时间量(以纳秒为单位)。 |
frameIndex | FrameDataView 的帧索引。 |
frameStartTimeMs | CPU 帧的开始时间(以毫秒为单位)。 |
frameStartTimeNs | CPU 帧的开始时间(以纳秒为单位)。 |
frameTimeMs | CPU 帧时间量(以毫秒为单位)。 |
frameTimeNs | CPU 帧时间量(以纳秒为单位)。 |
maxDepth | 线程数据中的最大子样本级别。 |
sampleCount | 线程帧中的样本数量。 |
threadGroupName | 线程所属组的名称。 |
threadId | 与线程关联的持久标识符。 |
threadIndex | 当前帧中线程的索引。 |
threadName | 线程的名称。 |
valid | 线程的帧数据处理完毕并准备好检索后为 True。 |
GetAllCategories | 获取当前性能分析会话中所有可用的 Profiler 类别。 |
GetCategoryInfo | 获取给定类别 ID 的 Profiler 类别信息。 |
GetCounterValueAsDouble | 将帧中计数器标记的最后一个值作为双精度浮点数数据类型获取。 |
GetCounterValueAsFloat | 将帧中计数器标记的最后一个值作为单精度浮点数数据类型获取。 |
GetCounterValueAsInt | 将帧中计数器标记的最后一个值作为 int 数据类型获取。 |
GetCounterValueAsLong | 将帧中计数器标记的最后一个值作为长整数数据类型获取。 |
GetCounterValuePtr | 获取指向帧中计数器标记的最后一个值的非安全指针。 |
GetFrameMetaData | 检索与帧关联的元数据。 |
GetFrameMetaDataCount | 获取帧中每个 id 和标签对的元数据块的总数。 |
GetGfxResourceInfo | 获取给定图形资源标识符的信息。 |
GetMarkerCategoryIndex | 获取特定标记标识符的 Profiler 标记类别。 |
GetMarkerFlags | 获取特定标记标识符的 Profiler 标记标志。 |
GetMarkerId | 获取特定名称的 Profiler 标记标识符。 |
GetMarkerMetadataInfo | 获取特定标记标识符的 Profiler 标记元数据信息。 |
GetMarkerName | 获取特定标记标识符的 Profiler 标记名称。 |
GetMarkers | 获取当前性能分析会话中所有可用的标记。 |
GetSessionMetaData | 将此帧所在的会话的元数据作为 NativeArray 检索。 |
GetSessionMetaDataCount | 获取 Profiler 会话中每个 id 和标签对的元数据块的总数。 |
GetUnityObjectInfo | 获取给定实例 ID 的 UnityEngine.Object 信息。 |
GetUnityObjectNativeTypeInfo | 获取本机 Unity 类型信息。 |
GetUnityObjectNativeTypeInfoCount | 返回捕获中的本机类型计数。 |
HasCounterValue | 对于在活动帧中包含计数器的标记返回 true。 |
ResolveMethodInfo | 返回指定方法地址的方法名称和位置信息。 |