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

FrameDataView.GetSessionMetaData

Declaration

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

Параметры

Параметр Описание
Идентификатор Уникальный идентификатор, связанный с данными.
метка Индекс потока данных.
индекс Индекс кусков.

Возвращаемое значение

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

Описание

Получает метаданные сессии, в которой произошел этот кадр, как NativeArray.

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

Использование Идентификатор чтобы идентифицировать метаданные из вашего Project или пакет.
Использование метка различать различные потоки данных.
Использование индекс для получения отдельных блоков данных для каждого 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<byte> textureData = t.GetRawTextureData<byte>(); Profiler.EmitSessionMetaData(MyProjectId, TextureInfoTag, new[] { textureInfo }); Profiler.EmitSessionMetaData(MyProjectId, TextureDataTag, textureData); }

public Texture2D GetSessionTextureFromProfilerStream(int frame) { using (var frameData = ProfilerDriver.GetRawFrameDataView(frame, 0)) { NativeArray<TextureInfo> textureInfos = frameData.GetSessionMetaData<TextureInfo>(MyProjectId, TextureInfoTag); if (textureInfos.Length == 0) return null;

NativeArray<byte> textureData = frameData.GetSessionMetaData<byte>(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.