Unity 6.3
0 онлайн 0 гостей 3 в системе
Вход

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,.