版本:Unity 6 (6000.0)
语言中文(简体)
  • C#

FrameDataView.GetSessionMetaData

提出更改建议

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们确实会阅读用户的每项建议,并在必要时进行更新。

关闭

提交失败

由于某些原因,无法提交您的建议的更改。请在几分钟后<a>重试</a>。感谢您花时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

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

声明

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

参数

id 与数据关联的唯一标识符。
tag 数据流索引。
index 块索引。

返回

NativeArray<T> 以 NativeArray 形式返回会话元数据。

描述

将此帧发生的会话元数据作为一个 NativeArray 检索。

使用 GetSessionMetaData 检索 Profiler.EmitSessionMetaData 方法写入到 Profiler 流中的数据。Profiler 数据可能包含来自不同会话的帧。

使用 id 标识 Project 或程序包中的元数据。
使用 tag 区分不同的数据流。
使用 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<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