Version: 6000.3
语言: 中文
分析资产流程
资产加载分析器模块参考

收集资产加载指标

使用AsyncReadManagerMetrics类来监控运行时资产加载和文件读取性能。此类记录由AsyncReadManager.

Unity 使用AsyncReadManager在运行时读取大多数文件,包括资产包、可寻址对象和资源。您还可以从脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
请参阅术语表
AsyncReadManager.Read.

您可以使用AsyncReadManagerMetrics执行以下作:

  • 开始和停止指标收集。
  • 检索和分析记录的指标数据。
  • 筛选和汇总数据以帮助您进行分析。

此信息可以帮助您识别资产加载问题,并衡量更改对性能的影响。

开发构建要求

AsyncReadManagerMetrics类仅适用于开发版本开发版本包括调试符号并启用性能分析器。更多信息
请参阅术语表
.为确保兼容性,请将调用包装为AsyncReadManagerMetricsAPI 中的#ifpreprocessor 指令使用ENABLE_PROFILER象征。对于较旧的 Unity 版本,请使用UNITY_2020_2_OR_NEWER符号以删除指标代码。例如:

#if ENABLE_PROFILER && UNITY_2020_2_OR_NEWER
    AsyncReadManagerMetrics.StartCollectingMetrics();
#endif

启用指标收集

在记录任何数据之前启用指标收集。您可以通过以下方式之一执行此作:

要在 Play 模式下收集指标,请将-enable-file-read-metrics参数。但是,编辑器会加载某些类别的资产,例如纹理,并且在你进入 播放(Play) 模式时不会重新加载它们。要获得完整的文件 I/O 指标,必须从应用程序的开发版本中收集数据。

获取指标数据

GetMetrics从中检索收集的指标AsyncReadManagerMetrics.指定AsyncReadManagerMetrics.Flags以确定检索后是否清除指标。清除指标会删除已完成(包括已取消和失败)的读取,但保留排队或正在进行的作。要访问未完成作的指标,请调用GetMetrics完成后再次。通过定期清除指标,可以避免重读相同的数据,还可以减少系统的数据开销。

#if ENABLE_PROFILER && UNITY_2020_2_OR_NEWER
    AsyncReadManagerRequestMetric[] metrics 
        = AsyncReadManagerMetrics.GetMetrics(AsyncReadManagerMetrics.Flags.ClearOnRead);
#endif

指标数据包括以下上下文数据:

以下是支持的资产 TypeID 列表:

类型ID 类型名称
28 纹理2D
117 纹理3D
89 立方体贴图六个方形纹理的集合,可以表示环境中的反射或几何体后面绘制的天空盒。这六个正方形形成了一个围绕物体的假想立方体的面;每个面表示沿世界轴方向(上、下、左、右、前和后)的视图。更多信息
请参阅术语表
43 网孔

有关可能出现的其他 TypeID,请参阅 YAML 类 ID 参考

获取汇总数据

获取摘要AsyncReadManager指标:

例如:

#if ENABLE_PROFILER && UNITY_2020_2_OR_NEWER
    AsyncReadManagerSummaryMetrics summaryOfMetrics 
        = AsyncReadManagerMetrics.GetCurrentSummaryMetrics(AsyncReadManagerMetrics.Flags.ClearOnRead);
#endif

或:

#if ENABLE_PROFILER && UNITY_2020_2_OR_NEWER
    AsyncReadManagerRequestMetric[] metrics 
        = AsyncReadManagerMetrics.GetMetrics(AsyncReadManagerMetrics.Flags.ClearOnRead);
    AsyncReadManagerSummaryMetrics summaryOfMetrics 
        = AsyncReadManagerMetrics.GetSummaryOfMetrics(metrics);
#endif

汇总统计数据包括:

  • 平均带宽
  • 平均读取大小
  • 加载时间最长的资产类型
  • 读取次数
  • 请求数
  • 读取的总字节数

有关摘要指标的完整列表,请参阅AsyncReadManagerSummaryMetrics.

默认情况下,汇总的统计信息包括所有读取作,包括排队或正在进行的读取作。可以使用筛选器将摘要限制为感兴趣的作。例如,可以使用过滤器将汇总统计信息限制为纹理资产的已完成读取作。

注意:计算摘要需要处理资源。为避免影响您的测量,请先收集指标,并在作完成后对其进行汇总。

使用摘要筛选器

AsyncReadManagerMetricsFilters以过滤汇总数据。您可以按以下条件进行筛选:

您可以为同一过滤器设置多个类别。读取作必须与所有类别匹配,该作的指标才能包含在摘要中。例如,您可以为ProcessingStateSubsystem过滤器的过滤器,以仅汇总由指定子系统启动的指定处理状态下的作。

您还可以为一个类别指定多个值。在这种情况下,读取作可以匹配您为类别指定的任何值,以便将其指标包含在摘要中。例如,按两者进行筛选meshUnity 的主要图形原语。网格体构成了 3D 世界的很大一部分。Unity 支持三角或四边形多边形网格。Nurbs、Nurms、Subdiv 曲面必须转换为多边形。更多信息
请参阅术语表
texture渲染游戏对象、精灵或 UI 元素时使用的图像。纹理通常应用于网格表面,以赋予其视觉细节。更多信息
请参阅术语表
包括两种资产类型的作。

其他资源

分析资产流程
资产加载分析器模块参考