Version: Unity 6.0 (6000.0)
语言 : 中文
内存性能分析器模块简介
内存性能分析器模块参考

访问播放器中的内存计数器

可以使用 ProfilerRecorder API 访问播放器中内存性能分析器 (Memory Profiler) 模块的计数器。

以下示例包含一个简单的脚本,用于收集总预留内存 (Total Reserved Memory)GC 预留内存 (Reserved Memory)系统已使用内存 (System Used Memory) 指标,并将它们显示为 GUI.TextArea。内存性能分析器模块信息属于 ProfilerCategory.Memory 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! 教程项目的结果。

Tanks! 教程,其中包含覆加的内存信息
Tanks! 教程,其中包含覆加的内存信息

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

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

其他资源

内存性能分析器模块简介
内存性能分析器模块参考