版本:Unity 6 (6000.0)
语言英语
  • C#

MarkerFlags.AvailabilityNonDevelopment

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。尽管我们无法接受所有提交,但我们确实会阅读用户建议的每项更改,并在适用情况下进行更新。

关闭

提交失败

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

关闭

取消

说明

指定标记存在于非开发版 Player 中。

使用 AvailabilityNonDevelopment 来确定分析器标记或计数器在非开发版 Player 中是否可用。

using System.Collections.Generic;
using Unity.Profiling.LowLevel;
using Unity.Profiling.LowLevel.Unsafe;

public class Example { public static unsafe void WriteAllNonDevelopmentStatsToFile(string filePath) { using (var writer = new System.IO.StreamWriter(filePath)) { var availableStatHandles = new List<ProfilerRecorderHandle>(); ProfilerRecorderHandle.GetAvailable(availableStatHandles); foreach (var h in availableStatHandles) { var statDesc = ProfilerRecorderHandle.GetDescription(h); if (!statDesc.Flags.HasFlag(MarkerFlags.AvailabilityNonDevelopment)) continue;

var name = System.Text.Encoding.UTF8.GetString(statDesc.NameUtf8, statDesc.NameUtf8Len); writer.WriteLine($"{name};{statDesc.Flags}"); } } } }

使用 AvailabilityNonDevelopment 表示使用 ProfilerUnsafeUtility.CreateMarker 编写的分析器标记在非开发版 Player 中可用。

using Unity.Collections.LowLevel.Unsafe;
using Unity.Profiling.LowLevel;
using Unity.Profiling.LowLevel.Unsafe;
using System;

class Example { static readonly IntPtr markerHandle = ProfilerUnsafeUtility.CreateMarker("MyMarker", ProfilerUnsafeUtility.CategoryScripts, MarkerFlags.AvailabilityNonDevelopment, 0); static unsafe void DoWork(int num) { ProfilerUnsafeUtility.BeginSample(markerHandle); //... ProfilerUnsafeUtility.EndSample(markerHandle); } }

注意
AvailabilityNonDevelopment 标志对 ProfilerMarker 的创建没有影响,因为 ProfilerMarker API 仅针对开发版 Player。