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

FrameDataView.GetFrameMetaData

Declaration

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

Параметры

Параметр Описание
Идентификатор Project или идентификатор пакета.
метка Индекс потока данных.
индекс Индекс кусков.

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

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

Описание

Получает метаданные, связанные с кадром.

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

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

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.EmitFrameMetaData(MyProjectId, TextureInfoTag, new[] { textureInfo }); Profiler.EmitFrameMetaData(MyProjectId, TextureDataTag, textureData); }

public Texture2D GetTextureFromProfilerStream(int frame) { using (var frameData = ProfilerDriver.GetHierarchyFrameDataView(frame, 0, HierarchyFrameDataView.ViewModes.Default, HierarchyFrameDataView.columnDontSort, false)) { NativeArray<TextureInfo> textureInfos = frameData.GetFrameMetaData<TextureInfo>(MyProjectId, TextureInfoTag); if (textureInfos.Length == 0) return null;

NativeArray<byte> textureData = frameData.GetFrameMetaData<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.EmitFrameMetaData.