您可以使用ProfilerRecorder API 访问玩家中的内存Profiler一个帮助您优化游戏的窗口。它显示了游戏各个区域花费的时间。例如,它可以报告渲染、动画或游戏逻辑中花费的时间百分比。更多信息
参见 术语表 模块的计数器。
以下示例包含一个简单的脚本,用于收集总保留内存、GC 保留内存和系统使用内存指标,并将其显示为GUI.TextArea
。内存 Profiler 模块信息属于ProfilerCategory.Memory
Profiler 类别标识 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);
}
}
以下屏幕截图显示了将脚本添加到坦克!教程项目的结果。
此信息在发布版玩家中可用,其他内存 Profiler 模块中可用的高级计数器也是如此。如果要查看 Profiler 窗口中自定义模块中的选定内存计数器,请使用Profiler 模块编辑器配置图表。