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

FrameDataView.GetSessionMetaData

Объявление

public NativeArray GetSessionMetaData(Guid id, int tag);

public NativeArray GetSessionMetaData(Guid id, int tag, int index);

Параметры

id Уникальный идентификатор, связанный с данными.
tag Индекс потока данных.
index Индекс фрагмента.

Возвращает

NativeArray Возвращает метаданные сеанса в виде NativeArray.

Описание

Извлекает метаданные сеанса, в котором этот кадр появился, как NativeArray.

Используйте GetSessionMetaData для получения данных, которые метод Profiler.EmitSessionMetaData записал в поток Profiler. Данные профилировщика могут содержать кадры из разных сеансов.

Используйте id для идентификации метаданных из вашего проекта или пакета.
Используйте тег, чтобы различать разные потоки данных.
Используйте index для извлечения отдельных фрагментов данных для каждого Profiler.EmitSessionMetaData, вызываемого во время сеанса профилирования.

using System; using Unity.Collections; using UnityEditor.Profiling; using UnityEditorInternal; 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; public void EmitTextureToProfilerStream(Texture2D t) { TextureInfo textureInfo = new TextureInfo() { format = (int)t.format, w = t.width, h = t.height }; NativeArray textureData = t.GetRawTextureData(); Profiler.EmitSessionMetaData(MyProjectId, TextureInfoTag, new[] { textureInfo }); Profiler.EmitSessionMetaData(MyProjectId, TextureDataTag, textureData); } public Texture2D GetSessionTextureFromProfilerStream(int frame) { using (var frameData = ProfilerDriver.GetRawFrameDataView(frame, 0)) { NativeArray textureInfos = frameData.GetSessionMetaData(MyProjectId, TextureInfoTag); if (textureInfos.Length == 0) return null; NativeArray textureData = frameData.GetSessionMetaData(MyProjectId, TextureDataTag); if (textureData.Length == 0) return null; TextureInfo textureInfo = textureInfos[0]; Texture2D texture = new Texture2D(textureInfo.w, textureInfo.h, (TextureFormat)textureInfo.format, false); texture.LoadRawTextureData(textureData); return texture; } } }

Примечание. Экземпляр FrameDataView определяет время жизни возвращаемого NativeArray. Таким образом, если FrameDataView удаляется, все возвращенные метаданные становятся недействительными и не могут использоваться. Скопируйте данные в новый NativeArray, если они нужны вам дольше.

Смотрите так же: Profiler.EmitSessionMetaData.

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