Profiler.EmitSessionMetaData
Declaration
public static void EmitSessionMetaData(Guid id, int tag, Array data);public static void EmitSessionMetaData(Guid id, int tag, List<T> data);public static void EmitSessionMetaData(Guid id, int tag, NativeArray<T> data);Параметры
| Параметр | Описание |
|---|---|
| Идентификатор | Уникальный идентификатор, связанный с данными. |
| метка | Индекс потока данных. |
| данные | Двоичные данные. |
Описание
Запись метаданных, связанных со всем захватом сессии Profiler.
Используйте EmitSessionMetaData для записи произвольных двоичных данных, которые должны быть доступны для всех кадров этой сессии. Данные должны содержать только типы, поддающиеся биттированию.
Если информация, которую вы хотите хранить в метаданных Profiler может меняться от кадра к кадру, рассмотрите возможность использования EmitFrameMetaData вместо этого.
using System; using System.Diagnostics; using Unity.Collections; using UnityEngine; using UnityEngine.Profiling;
public class Example { public struct TextureInfo { public int format; public int w; public int h; }
public static readonly Guid MyProjectId = new Guid("7E1DEA84-51F1-477A-82B5-B5C57AC1EBF7"); public static readonly int TextureInfoTag = 0; public static readonly int TextureDataTag = 1;
[Conditional("ENABLE_PROFILER")] public void EmitTextureToProfilerStream(Texture2D t) { if (!Profiler.enabled) return; TextureInfo textureInfo = new TextureInfo() { format = (int)t.format, w = t.width, h = t.height }; NativeArray<byte> textureData = t.GetRawTextureData<byte>(); Profiler.EmitSessionMetaData(MyProjectId, TextureInfoTag, new[] { textureInfo }); Profiler.EmitSessionMetaData(MyProjectId, TextureDataTag, textureData); } }
Примечание:
Запись больших кусков данных может увеличить Profiler's накладные расходы и использование памяти. Всегда проверяйте, Profiler является enabled перед генерацией данных. Когда это возможно, записывайте данные небольшими кусками, чтобы уменьшить использование памяти.
Дополнительные ресурсы: FrameDataView.GetSessionMetaData.