Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

ProfilerUnsafeUtility.BeginSampleWithMetadata

Объявление

public static void BeginSampleWithMetadata(IntPtr markerPtr, int metadataCount, void* metadata);

Параметры

markerPtr Ручка маркера профилировщика.
metadataCount Количество параметров метаданных.
metadata Небезопасный указатель на массив ProfilerMarkerData.

Описание

Начинает профилирование фрагмента кода, помеченного пользовательским именем, определенным дескриптором markerPtr и параметрами метаданных.

Код, отмеченный BeginSampleWithMetadata и EndSample отображается в иерархии Profiler. Всегда используйте EndSample, чтобы закрыть начатый раздел инструментированного кода.
В представлении временной шкалы окна Profiler предоставленные метаданные доступны во всплывающей подсказке. Используйте HierarchyFrameDataView.GetItemMetadata для программного извлечения метаданных.

Примечание. И BeginSampleWithMetadata, и EndSample являются потокобезопасными и могут использоваться в рабочем коде.
Низкоуровневый Profiler API включен в сборку релиза.

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); } }

Используйте Recorder, чтобы получить в проигрывателе тайминги для каждого кадра для определенного имени маркера.

Смотрите так же: EndSample, CreateMarker, SetMarkerMetadata.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3