包含此页的版本:
不含此页的版本:
效果图分析器帮助您优化游戏的窗口。它显示了在游戏的各个领域花费了多少时间。例如,它可以报告渲染、动画制作或游戏逻辑所花费的时间百分比。更多信息
请参阅术语表显示渲染统计信息以及有关 CPU 和 GPU 为渲染场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表.您可以使用这些统计数据来衡量场景中不同区域的资源强度,这对于优化很有用。
要打开“分析器”窗口,请转到菜单:窗口>分析>分析。
该图表显示应用程序渲染的批次、SetPass 调用、三角形和顶点的数量。下部窗格显示更多渲染统计数据,这些统计数据与 GameView 渲染统计信息(GameView Rendering Statistics) 窗口中显示的统计数据相匹配。
渲染分析器模块的图表分为以下几类:
| 图表 | 描述 |
|---|---|
| 批次计数 | Unity 在一帧内处理的批次数。 |
| SetPass 调用计数 | Unity 切换的次数着色器在 GPU 上运行的程序。更多信息 请参阅术语表传递它用于渲染游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息 请参阅术语表在一帧中。着色器可能包含多个着色器通道,每个通道以不同的方式呈现场景中的游戏对象。 |
| 三角形计数 | Unity 在帧内处理的三角形数。 |
| 顶点计数(Vertices Count) | Unity 在一帧内处理的顶点数。 |
单击 渲染分析器(Rendering Profiler) 模块时,窗口下半部分的详细信息窗格会显示详细的渲染统计信息。这些统计信息类似于“渲染统计信息”窗口中显示的统计信息。
在详细信息窗格的左上角,选择 打开帧调试器(Open Frame Debugger) 以打开帧调试器,其中提供了有关渲染帧的各个绘制调用的信息。
这些统计数据也可通过 ProfilerRecorder API 和 Profiler 模块编辑器获得,以便你可以将它们添加到自定义 Profiler 模块中。
| 统计 | 描述 | 可在发布播放器中访问 |
|---|---|---|
| SetPass 调用 | Unity 在帧期间切换用于渲染游戏对象的着色器通道的次数。着色器可能包含多个着色器通道,每个通道以不同的方式呈现场景中的游戏对象。 | 是的 |
| 绘制调用 | Unity 在一帧内发出的绘制调用总数。Unity 在将游戏对象渲染到屏幕时发出绘制调用。此数字包括非批处理绘制调用以及动态和静态批量绘制调用。 | 是的 |
| 批次 | Unity 在一帧内处理的批处理总数。此数字包括静态批次和动态批次。 | 是的 |
| 三角形 | Unity 在帧内处理的三角形数。 | 是的 |
| 顶点 | Unity 在帧期间处理的顶点数。 | 是的 |
| (动态批处理) | 本节包含有关动态批处理一种自动 Unity 过程,它尝试将多个网格渲染为单个网格,以优化图形性能。该技术转换 CPU 上的所有游戏对象顶点,并将许多相似的顶点组合在一起。更多信息 请参阅术语表. |
不 |
| 批量绘制调用 | Unity 合并为动态批处理的绘制调用数。 | 不 |
| 批次 | Unity 在帧期间处理的动态批次数。 | 不 |
| 三角形 | 动态批次中包含的游戏对象中的三角形数。 | 不 |
| 顶点 | 动态批次中包含的游戏对象中的顶点数。 | 不 |
| 时间 | Unity 创建动态批处理结构所花费的时间。 | 不 |
| (静态批处理) | 本节包含有关静态批处理Unity 用于在屏幕上绘制游戏对象的一种技术,用于将静态(非移动)游戏对象组合成大网格,并以更快的方式呈现它们。更多信息 请参阅术语表. |
不 |
| 批量绘制调用 | Unity 合并为静态批处理的绘制调用数。 | 不 |
| 批次 | Unity 在一帧内处理的静态批次数。 | 不 |
| 三角形 | 静态批次中包含的游戏对象中的三角形数。 | 不 |
| 顶点 | 静态批次中包含的游戏对象中的顶点数。 | 不 |
| (实例化) | 本部分包含有关GPU实例化的统计数据。 | 不 |
| 批量绘制调用 | Unity 合并到实例批处理中的绘制调用数。 | 不 |
| 批次 | Unity 在帧期间为渲染实例化游戏对象而处理的批次数。 | 不 |
| 三角形 | 实例化游戏对象中的三角形数。 | 不 |
| 顶点 | 实例化游戏对象中的顶点数。 | 不 |
| 使用的纹理 | 的数量纹理渲染游戏对象、精灵或 UI 元素时使用的图像。纹理通常应用于网格表面,以赋予其视觉细节。更多信息 请参阅术语表帧期间使用的 Unity 和纹理使用的内存量。 |
不 |
| 渲染纹理(Render Textures)一种特殊类型的纹理,在运行时创建和更新。要使用它们,请先创建一个新的渲染纹理,并指定要渲染到其中的摄像机之一。然后,你可以在材质中使用渲染纹理,就像使用常规纹理一样。更多信息 请参阅术语表 |
Unity 在帧期间使用的 RenderTexture 数量以及 RenderTextures 使用的内存量。 | 是的 |
| 渲染纹理更改(Render Textures Changes) | Unity 在帧期间将一个或多个 RenderTexture 设置为呈现目标的次数。 | 是的 |
| 使用的缓冲区 | 它们使用的 GPU 缓冲区和内存的总数。这包括顶点、索引和计算缓冲区以及呈现所需的所有内部缓冲区。 | 是的 |
| 帧内顶点缓冲区上传(Vertex Buffer Upload In Frame) | CPU在帧中上传到GPU的几何体量。这表示顶点/法线/纹理坐标数据。GPU 上可能已经有一些几何体。此统计数据仅包括 Unity 在帧中传输的几何体。 | 是的 |
| 索引缓冲区上传帧数 | CPU在帧中上传到GPU的几何体量。这表示三角形索引数据。GPU 上可能已经有一些几何体。此统计数据仅包括 Unity 在帧中传输的几何体。 | 是的 |
| 暗影施法者计数 | 在帧中投射阴影的游戏对象数。如果游戏对象投射多个阴影(因为多个灯光照亮它),则它每个投射的阴影都有一个条目。 | 是的 |
渲染模块Profiler 计数器使用 ProfilerCounter API 放置在代码中,以跟踪指标,例如游戏中生成的敌人数量。更多信息
请参阅术语表在播放器中也可用。使用 ProfilerRecorder API 访问播放器中的渲染分析器模块信息。高级计数器在发布播放器中也可用。
以下示例包含一个简单的脚本,该脚本收集SetPass Calls Count,Draw Calls Count和Vertices Count指标并将其显示为 TextArea。
using System.Text;
using Unity.Profiling;
using UnityEngine;
public class RenderStatsScript : MonoBehaviour
{
string statsText;
ProfilerRecorder setPassCallsRecorder;
ProfilerRecorder drawCallsRecorder;
ProfilerRecorder verticesRecorder;
void OnEnable()
{
setPassCallsRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Render, "SetPass Calls Count");
drawCallsRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Render, "Draw Calls Count");
verticesRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Render, "Vertices Count");
}
void OnDisable()
{
setPassCallsRecorder.Dispose();
drawCallsRecorder.Dispose();
verticesRecorder.Dispose();
}
void Update()
{
var sb = new StringBuilder(500);
if (setPassCallsRecorder.Valid)
sb.AppendLine($"SetPass Calls: {setPassCallsRecorder.LastValue}");
if (drawCallsRecorder.Valid)
sb.AppendLine($"Draw Calls: {drawCallsRecorder.LastValue}");
if (verticesRecorder.Valid)
sb.AppendLine($"Vertices: {verticesRecorder.LastValue}");
statsText = sb.ToString();
}
void OnGUI()
{
GUI.TextArea(new Rect(10, 30, 250, 50), statsText);
}
}
渲染性能分析器模块信息属于 ProfilerCategory.Render 性能分析器类别标识 Unity 子系统的工作负载数据(例如,渲染、脚本和动画类别)。Unity 对类别应用颜色编码,以直观地区分 Profiler 窗口中的数据类型。
请参阅术语表.
如果要突出显示自定义模块中选定的渲染计数器,请使用模块编辑器配置图表和详细视图。