Version: 6000.3
语言: 中文
将探查器标记添加到代码
可视化分析器计数器

将探查器计数器添加到代码中

要添加一个分析器帮助您优化游戏的窗口。它显示了在游戏的各个领域花费了多少时间。例如,它可以报告渲染、动画制作或游戏逻辑所花费的时间百分比。更多信息
请参阅术语表
计数器,创建脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
请参阅术语表
执行以下作:

这些部分中的代码示例添加了一个Profiler 计数器使用 ProfilerCounter API 放置在代码中,用于跟踪指标,例如游戏中生成的敌人数量。更多信息
请参阅术语表
以跟踪 Unity 为每个实例创建的粒子总数游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表
的轨迹效果。在这些示例中,游戏对象的名称为“Tank”。

先决条件

一些示例使用 Profiling Core 包,您必须在开始之前安装该包。Unity Profiling Core 包无法在包管理器 UI 中发现,因为它是核心包。要安装包,请按其名称添加它,即com.unity.profiling.core.

创建和定义计数器

要创建新计数器,请执行以下作:

  1. 编写一个脚本来定义新计数器的值类型。
  2. 为此类型分配名称和单位。

重要:创建计数器时,必须指定哪个性能分析器类别标识 Unity 子系统的工作负载数据(例如,渲染、脚本和动画类别)。Unity 对类别应用颜色编码,以直观地区分 Profiler 窗口中的数据类型。
请参阅术语表
您的新计数器属于。为此,请使用ProfilerCategory类。以下示例中的脚本使用现有的ProfilerCategory.Scripts类别。

Profiler 计数器 API 支持推送和拉取作。您可以将计数器的值推送到 Profiler,或者 Profiler 可以在帧末尾拉取该值。

如果数据不经常更改(例如每帧更改一次),请使用ProfilerCounterAPI 将计数器数据推送到 Profiler。如果数据每帧多次更改,请使用ProfilerCounterValue应用程序接口。这使得性能分析器自动拾取帧末尾的最后一个值。

以下示例脚本定义了ProfilerCounterValue TankTrailParticleCount,名称为Tank Trail Particles和一个单位ProfilerMarkerDataUnit.Count:

public static class GameStats
{
   public static readonly ProfilerCategory TanksCategory = ProfilerCategory.Scripts;

   public const string TankTrailParticleCountName = "Tank Trail Particles";
   public static readonly ProfilerCounterValue<int> TankTrailParticleCount =
       new ProfilerCounterValue<int>(TanksCategory, TankTrailParticleCountName, ProfilerMarkerDataUnit.Count,
           ProfilerCounterOptions.FlushOnEndOfFrame | ProfilerCounterOptions.ResetToZeroOnFlush);
}

选项FlushOnEndOfFrameResetToZeroOnFlush自动将计数器发送到分析器数据流,并在帧结束时将计数值重置为零。

更新计数器的值

要更新计数器的值,请创建一个 MonoBehaviour 脚本来设置您定义的计数器的值。

以下 MonoBehaviour 脚本计算 Update 函数中每一帧属于分配的游戏对象的尾迹粒子数。为此,它使用名为TankTrailParticleCount.

以下示例脚本还创建了一个名为 Trail 的公共属性粒子系统通过在场景中生成大量小型 2D 图像并为其设置动画来模拟流体实体(如液体、云和火焰)的组件。更多信息
请参阅术语表
(m_TrailParticleSystem) 在检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
请参阅术语表
:

 using UnityEngine;

 class TankMovement : MonoBehaviour
 {
    public ParticleSystem m_TrailParticleSystem;

    void Update()
    {
        GameStats.TankTrailParticleCount.Value += m_TrailParticleSystem.particleCount;
    }
 }

将 Profiler 计数器添加到自定义 Profiler 模块

要通过代码在自定义 Profiler 模块中显示 Profiler 计数器,您必须创建一个新的ProfilerModule脚本并定义模块的属性,包括它显示的计数器、名称和图标。有关如何执行此作的信息,请参阅在代码中创建分析器模块

其他资源

将探查器标记添加到代码
可视化分析器计数器