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

ProfilerRecorder

структура в Unity.Profiling

Выполнено в:UnityEngine.CoreModule

Описание

Записывает метрические данные Profiler, которые генерирует маркер или счетчик Profiler.

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

Этот API можно использовать в сборках редактора и проигрывателя, включая Release Players. Используйте ProfilerRecorderHandle.GetAvailable для получения полного списка поддерживаемых показателей. Список доступных встроенных маркеров и счетчиков Profiler см. в Profiler ссылка на маркеры и ссылка на счетчики Profiler.

В следующем примере показано, как можно использовать ProfilerRecorder для получения статистики памяти и времени.

using System.Collections.Generic;
using System.Text;
using Unity.Profiling;
using UnityEngine;

public class ExampleScript : MonoBehaviour { string statsText; ProfilerRecorder systemMemoryRecorder; ProfilerRecorder gcMemoryRecorder; ProfilerRecorder mainThreadTimeRecorder;

static double GetRecorderFrameAverage(ProfilerRecorder recorder) { var samplesCount = recorder.Capacity; if (samplesCount == 0) return 0;

double r = 0; unsafe { var samples = stackalloc ProfilerRecorderSample[samplesCount]; recorder.CopyTo(samples, samplesCount); for (var i = 0; i < samplesCount; ++i) r += samples[i].Value; r /= samplesCount; }

return r; }

void OnEnable() { systemMemoryRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Memory, "System Used Memory"); gcMemoryRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Memory, "GC Reserved Memory"); mainThreadTimeRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Internal, "Main Thread", 15); }

void OnDisable() { systemMemoryRecorder.Dispose(); gcMemoryRecorder.Dispose(); mainThreadTimeRecorder.Dispose(); }

void Update() { var sb = new StringBuilder(500); sb.AppendLine($"Frame Time: {GetRecorderFrameAverage(mainThreadTimeRecorder) * (1e-6f):F1} ms"); sb.AppendLine($"GC Memory: {gcMemoryRecorder.LastValue / (1024 * 1024)} MB"); sb.AppendLine($"System Memory: {systemMemoryRecorder.LastValue / (1024 * 1024)} MB"); statsText = sb.ToString(); }

void OnGUI() { GUI.TextArea(new Rect(10, 30, 250, 50), statsText); } }

Примечание:
ProfilerRecorder выделяет неуправляемые ресурсы и реализует интерфейс IDisposable. Используйте Dispose освободить ресурсы, когда вам больше не нужно вести статистику.

ProfilerRecorder предоставляет доступ к Unity метрика в двух режимах: немедленный доступ к значению счетчика, и значение счетчика, когда кадр заканчивается. Дополнительные ресурсы: CurrentValue, LastValue, GetSample, ProfilerRecorderHandle.GetAvailable.

Свойства

Свойство Описание
CapacityМаксимальное количество образцов, которые может захватить ProfilerRecorder.
CountСобранные пробы считаются.
CurrentValueПолучает текущее значение метрики Profiler.
CurrentValueAsDoubleПолучает текущее значение метрики Profiler как двойное значение.
DataTypeТип данных значения метрики Profiler.
IsRunningУказывает, прикреплен ли ProfilerRecorder к метрике Profiler.
LastValueПолучает последнее значение, собранное ProfilerRecorder.
LastValueAsDoubleПолучает последнее значение, собранное ProfilerRecorder как двойное.
UnitTypeТип единицы.
ValidУказывает, связан ли ProfilerRecorder с действительным маркером или счетчиком Profiler.
WrappedAroundПоказывает, если мощность ProfilerRecorder была превышена.

Конструкторы

Конструктор Описание
ProfilerRecorderСоздает экземпляр ProfilerRecorder с именем метрики и категорией Profiler.

Открытые методы

Метод Описание
CopyToКопирует собранные образцы в массив назначения.
DisposeВыпускает неуправляемый экземпляр ProfilerRecorder.
GetSampleПолучение образцовых данных.
ResetОстановка сбора данных и удаление собранных образцов.
StartНачать сбор данных.
StopОстановка сбора данных.
ToArrayИспользуется для преобразования собранных образцов в массив.

Статические методы

Метод Описание
StartNewИнициализация нового экземпляра ProfilerRecorder и начало сбора данных.