版本:Unity 6 (6000.0)
语言中文(简体)
  • C#

RawFrameDataView.GetSampleMarkerId

提出修改建议

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每一项建议,并视情况进行更新。

关闭

提交失败

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

关闭

取消

声明

public int GetSampleMarkerId(int sampleIndex);

参数

sampleIndex 分析仪样本索引。

返回

int 返回分析仪标记标识符。对于无效索引,返回 invalidMarkerId

描述

获取分析仪标记标识符,此标识符唯一地标识样本名称。

分析仪对分析会话期间创建的每个标记使用唯一标识符。标记可以生成许多样本,这些样本可以通过 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; } }