指标介绍:

  • FPS(Frames per Second):显示当前游戏帧率。帧率越高,游戏画面越流畅。为提高帧率,可减少游戏对象数量、优化渲染方式等。

  • Draw Calls:显示当前帧需要渲染的次数。过多的Draw Calls会导致游戏运行缓慢。降低此指标可通过优化场景、材质或使用批处理技术等方式。

  • Tris:显示当前帧需要渲染的三角形数量。过多的三角形数量同样会导致游戏运行缓慢。减少此指标可采取降低模型细节、使用LOD技术等方法。

  • Memory:显示当前游戏所使用的内存大小。过高的内存占用会导致游戏运行缓慢或崩溃。降低此指标可通过优化资源加载和释放方式等方法。

  • Audio:显示当前游戏音频的播放情况,包括音频资源的大小和播放时间。优化音频资源的加载和播放方式可减少CPU占用率,提高游戏性能。

通过实时监控这些性能指标,开发者可以及时发现问题并采取相应的优化措施,提高游戏性能和流畅度。

如何优化Tris:

在Unity中,Tris是指场景中所有三角形的数量,也称为三角形数或面数。Tris是影响游戏性能的重要指标,它直接影响游戏的帧率和渲染性能。

Tris数量过多会导致游戏的帧率下降,因为GPU需要处理更多的三角形,在性能较差的设备上可能会出现卡顿现象。因此,在制作游戏时,需要尽可能减少Tris的数量,以提高游戏的运行效率。

以下是一些常用的减少Tris数量的方法:

  1. 使用简单的几何形状:在制作游戏时,尽量使用简单的几何形状,例如球体、立方体、圆柱等。这些几何形状的Tris数量较少,可以有效地减少三角形数量。

  2. 使用LOD(Level Of Detail):在场景中使用不同级别的模型或材质,以适应不同距离的观察者。在近距离观察时,使用高级别的模型或材质;远距离观察时,使用低级别的模型或材质。这样可以有效减少Tris数量,提高游戏性能。

  3. 合并网格:将多个网格合并为一个网格,以减少Tris数量。可以使用Unity自带的网格合并工具或第三方插件,例如ProBuilder。

  4. 使用遮挡剔除(Occlusion Culling):根据场景中物体的可见性,只渲染可见的物体,从而减少不必要的渲染操作。这样可以减少渲染的Tris数量,提高游戏性能。

通过使用这些技术,开发者可以有效减少Tris数量,优化游戏性能,提高游戏的帧率和流畅度。

批处理优化方法:

  1. 合并相同材质球的多个网格:将多个使用相同材质球的网格合并成一个网格,减少批次的数量。在使用Mesh Combine工具时,设置CombineInstances数组的材质球为相同的材质球即可。

  2. 使用材质球批次合并:使用相同的材质球对多个物体应用相同的材质,或者使用批处理材质球,将多个物体合并到同一个批处理中。

  3. 使用 GPU Instance(GPU 实例化):通过使用 GPU 实例化技术,可以将多个相同的网格实例化为一个批次进行渲染。这样可以减少不必要的绘制调用和渲染开销,提高游戏性能。

  4. 使用静态批处理:将不会进行移动或变化的物体合并为一个静态批次。静态批处理只需要进行一次渲染调用,减少了渲染开销。

  5. 减少动态批处理中的顶点数:动态批处理会对每个物体的每帧顶点进行重新计算,因此顶点数越多开销越大。可以通过优化模型或使用低多边形模型来减少顶点数。

  6. 使用 GPU Skinning:GPU Skinning 是一种在 GPU 上执行的骨骼动画渲染技术,可以大幅度提高骨骼动画的性能。它通过将计算部分放到 GPU 上,减轻了 CPU 的负载。

以上是一些常用的批处理优化方法。通过合理地使用这些方法,可以减少绘制调用次数和渲染开销,提高游戏的性能和流畅度。

最后,在进行优化时,建议使用 Unity Profiler 进行性能分析,找出性能瓶颈并有针对性地进行优化。同时,也可以尝试使用不同的优化方案,并进行测试和比较,选择最适合当前项目的优化方法。

具体验证:

一、让场景卡顿的原因

1.物体的阴影

开启软阴影由5->17

2.物体的位置深度影响

如果将最左边的物体位置(0,-0.12,-1.62)->(0,1.05,-1.62)

Batches 从7->8.

3.物体材质个数影响

如果将材质统一成一个。batches 会从5->3

4.Batches受子物体数量上的MeshRender 影响。(项目中多这种)

父物体多渲染一个MeshRender  4->5

 二、使用到的验证技术

Frame Debugger(帧调试器)是Unity引擎中的一个强大工具,它提供了详细的关于游戏帧渲染过程的信息。通过使用帧调试器,开发者可以更好地理解游戏在每一帧中发生的事情,并对性能进行调试和优化。

帧调试器可以帮助开发者解决以下问题:

  1. 渲染顺序和批处理:帧调试器可以显示每一帧中的渲染顺序以及批处理情况。这使开发者能够识别哪些物体被合并到同一个批次渲染,以及是否存在未优化的渲染调用。

  2. Draw Calls(绘制调用)数量:帧调试器可以显示每一帧中的Draw Calls数量,即渲染管线中执行的渲染指令次数。通过降低Draw Calls数量,开发者可以提高游戏的性能。

  3. 资源使用情况:帧调试器提供了对纹理、材质和着色器等资源的使用情况的可视化展示。这有助于开发者发现资源的浪费和优化潜力。

  4. 三角形数量:帧调试器显示每个物体或模型的三角形数量。这可以帮助开发者识别具有高三角形数量的物体,并尝试优化它们以提高游戏性能。

通过使用帧调试器,开发者可以深入了解游戏的渲染流程和性能瓶颈,并采取相应的优化措施。优化后的游戏将拥有更高的帧率、更顺畅的动画和更好的用户体验。因此,帧调试器是Unity游戏开发过程中不可或缺的一项工具。

解决方式:

介绍几个插件吧,GPU、MeshBacker 、 Mesh Combine

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐