id | 模块标识符。用于区分不同插件、包或模块之间的元数据流。 |
tag | 数据流索引。 |
data | 二进制数据。 |
向 Profiler 流写入与当前帧关联的元数据。
使用 EmitFrameMetaData 向 profiler 流写入任意二进制数据。数据只能包含可复制类型。
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.EmitFrameMetaData(MyProjectId, TextureInfoTag, new[] { textureInfo }); Profiler.EmitFrameMetaData(MyProjectId, TextureDataTag, textureData); } }
注意
写入大块数据可能会增加 Profiler 的开销和内存使用率。在生成数据之前,务必检查 Profiler 是否 已启用。如果可能,将数据写入小块以降低内存使用率。
其他资源:FrameDataView.GetFrameMetaData。