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