ProfilerUnsafeUtility.BeginSampleWithMetadata
Declaration
public static void BeginSampleWithMetadata(IntPtr markerPtr, int metadataCount, void* metadata);Параметры
| Параметр | Описание |
|---|---|
| markerPtr | Profiler ручка маркера. |
| metadataCount | Параметры метаданных считаются. |
| метаданные | Небезопасный указатель на массив ProfilerMarkerData. |
Описание
Начинает профилирование части кода, помеченной пользовательским именем, которое определено параметрами обработчика и метаданных markerPtr.
Код, обозначенный BeginSampleWithMetadata и EndSample показывается в Profiler иерархии. Всегда используйте EndSample чтобы закрыть начатый раздел инструментального кода.
В течение Timeline взгляд на Profiler Окно предусмотрено метаданные имеется в наличии tooltip сообщение. Использование HierarchyFrameDataView.GetItemMetadata извлекать метаданные программно.
Примечание: Оба BeginSampleWithMetadata и EndSample безопасны для потоков и могут быть использованы в jobified коде.
Низкий уровень Profiler API включается в сборку Release.
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); } }
Используйте Recorder для получения в Проигрывателе времени на кадр для конкретного имени маркера.
Дополнительные ресурсы: EndSample, CreateMarker, SetMarkerMetadata.