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

ProfilerUnsafeUtility.CreateMarker

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

声明

public static IntPtr CreateMarker(string name, ushort categoryId, Unity.Profiling.LowLevel.MarkerFlags flags, int metadataCount);

声明

public static IntPtr CreateMarker(char* name, int nameLen, ushort categoryId, Unity.Profiling.LowLevel.MarkerFlags flags, int metadataCount);

参数

name 标记名称。
categoryId 分析器类别标识符。
flags 标记标志。
metadataCount 元数据参数数量,如果没有预期参数则为 0。
nameLen 标记名称字符串长度。

返回值

IntPtr 返回标记本机句柄。

描述

为代码检测构造新的分析器标记句柄。

仅对 ProfilerUnsafeUtility 方法使用分析器标记句柄。
categoryId 参数将标记与 ProfilerCategory 结构中预定义的类别之一关联。

注意: 使用 CreateMarker 创建的标记都会自动获取 MarkerFlags.Script 标志。

using Unity.Collections.LowLevel.Unsafe;
using Unity.Profiling.LowLevel;
using Unity.Profiling.LowLevel.Unsafe;
using System;

class Example { static readonly IntPtr markerHandle = ProfilerUnsafeUtility.CreateMarker("MyMarker", ProfilerUnsafeUtility.CategoryScripts, MarkerFlags.Default, 0); static unsafe void DoWork(int num) { ProfilerUnsafeUtility.BeginSample(markerHandle); //... ProfilerUnsafeUtility.EndSample(markerHandle); } }

在使用 :ref::BeginSampleWithMetadata 方法传递元数据时,使用 CreateMarker 设置元数据参数名称。

using Unity.Collections.LowLevel.Unsafe;
using Unity.Profiling;
using Unity.Profiling.LowLevel;
using Unity.Profiling.LowLevel.Unsafe;
using System;

class Example { static IntPtr MakeMarkerWithIntMetadata(string name, string paramName) { var handle = ProfilerUnsafeUtility.CreateMarker(name, ProfilerUnsafeUtility.CategoryScripts, MarkerFlags.Default, 1); ProfilerUnsafeUtility.SetMarkerMetadata(handle, 0, paramName, (byte)ProfilerMarkerDataType.Int32, (byte)ProfilerMarkerDataUnit.Count); return handle; }

static readonly IntPtr markerHandle = MakeMarkerWithIntMetadata("MyMarker", "Work Idx");

static unsafe void DoWork(int num) { var metadata = stackalloc ProfilerMarkerData[1]; metadata[0].Type = (byte)ProfilerMarkerDataType.Int32; metadata[0].Size = (uint)UnsafeUtility.SizeOf<int>(); metadata[0].Ptr = UnsafeUtility.AddressOf(ref num); ProfilerUnsafeUtility.BeginSampleWithMetadata(markerHandle, 1, metadata); //... ProfilerUnsafeUtility.EndSample(markerHandle); } }

其他资源:ProfilerCategoryMarkerFlags