Объявление
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 Возвращает собственный дескриптор маркера.
Описание
Создает новый дескриптор маркера Profiler для инструментирования кода.
Используйте дескриптор маркера профилировщика только с методами 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);
}
}
Используйте CreateMarker, чтобы установить имена параметров метаданных при передаче метаданных с помощью метода :ref::BeginSampleWithMetadata.
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();
metadata[0].Ptr = UnsafeUtility.AddressOf(ref num);
ProfilerUnsafeUtility.BeginSampleWithMetadata(markerHandle, 1, metadata);
//...
ProfilerUnsafeUtility.EndSample(markerHandle);
}
}
Смотрите так же: ProfilerCategory, MarkerFlags.