Version: 6000.3
语言: 中文
内存分析器模块介绍
内存分析器模块参考

访问玩家中的内存计数器

你可以使用 ProfilerRecorder API 访问内存分析器帮助您优化游戏的窗口。它显示了在游戏的各个领域花费了多少时间。例如,它可以报告渲染、动画制作或游戏逻辑所花费的时间百分比。更多信息
请参阅术语表
模块的计数器。

以下示例包含一个简单的脚本,用于收集“预留内存总量”、“GC 预留内存”和“系统已用内存”指标,并将其显示为GUI.TextArea.内存分析器模块信息属于ProfilerCategory.Memory 性能分析器类别标识 Unity 子系统的工作负载数据(例如,渲染、脚本和动画类别)。Unity 对类别应用颜色编码,以直观地区分 Profiler 窗口中的数据类型。
请参阅术语表
.

using System.Text;
using Unity.Profiling;
using UnityEngine;

public class MemoryStatsScript : MonoBehaviour
{
    string statsText;
    ProfilerRecorder totalReservedMemoryRecorder;
    ProfilerRecorder gcReservedMemoryRecorder;
    ProfilerRecorder systemUsedMemoryRecorder;

    void OnEnable()
    {
        totalReservedMemoryRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Memory, "Total Reserved Memory");
        gcReservedMemoryRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Memory, "GC Reserved Memory");
        systemUsedMemoryRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Memory, "System Used Memory");
    }

    void OnDisable()
    {
        totalReservedMemoryRecorder.Dispose();
        gcReservedMemoryRecorder.Dispose();
        systemUsedMemoryRecorder.Dispose();
    }

    void Update()
    {
        var sb = new StringBuilder(500);
        if (totalReservedMemoryRecorder.Valid)
            sb.AppendLine($"Total Reserved Memory: {totalReservedMemoryRecorder.LastValue}");
        if (gcReservedMemoryRecorder.Valid)
            sb.AppendLine($"GC Reserved Memory: {gcReservedMemoryRecorder.LastValue}");
        if (systemUsedMemoryRecorder.Valid)
            sb.AppendLine($"System Used Memory: {systemUsedMemoryRecorder.LastValue}");
        statsText = sb.ToString();
    }

    void OnGUI()
    {
        GUI.TextArea(new Rect(10, 30, 250, 50), statsText);
    }
}

以下屏幕截图显示了将脚本添加到 Tanks! 教程项目的结果。

坦克!包含叠加内存信息的教程
坦克!包含叠加内存信息的教程

此信息在发布播放器中可用,内存分析器模块中可用的其他高级计数器也是如此。如果要在“性能分析器”窗口中查看自定义模块中选定的内存计数器,请使用性能分析器模块编辑器配置图表。

有关将分析器信息添加到代码的更多信息,请参阅向代码添加分析信息

其他资源

内存分析器模块介绍
内存分析器模块参考