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

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.