【Unity性能优化】项目优化前需要进行哪些准备工作

写在前面

性能优化示例Git仓库https://github.com/WanKcn/Suntail_Village_Optimization
详细说明见仓库内README。
示例项目《Suntail_Village_Optimization》(以下简称项目SV

学习地址B站Metaverse大衍神君老师《Unity性能优化》系列课程
CSDN上的性能优化相关文章与学习笔记均存放在仓库/Documents目录下


1. 检查资源分布情况

1.1 可以检查项目中使用到的基本资源

在Asset目录下使用Search by Type进行分类查看,可以方便的了解到工程的资源分布情况。如下图所示
在这里插入图片描述
search by type
Search by Type按钮左侧的小箭头也可以打开Search窗口进行搜索。
在这里插入图片描述
通过对不同资源的筛查,得到下面数据表:

名称 数量 名称 数量
AudioClip 84 AnimationClip 3
AudioMixer 1 Font 2
Material 158 Mesh 833
Prefab 646 Shader 3
Scene 2 Script 13
Texture 306 Sprite 1

观察上面的表格,可以看到音频、材质、纹理、模型、贴图占比数量较大,而脚本、shader、场景较少。该表格数据可以作为优化的重点方向之一

1.2 检查场景中的摄像机数量与灯光数量

摄像机数量会影响整个渲染流程的复杂度,场景中的灯光数量会影响场景中的光照复杂度和阴影复杂度。

Hierarchy中搜索摄像机与灯光数量如下图:
在这里插入图片描述在这里插入图片描述
观察可以发现场景中摄像机数量只有1个,但实时灯光数量达到141个,数量较多。灯光可以作为优化重点方向之一

2. 检查平台设置

检查目标优化平台对应的Quality和渲染管线的设置

  1. 查看Quality设置中目标平台与编辑器平台的设置差异
  2. 渲染管线在对应目标平台的设置主要看使用到管线的类型,使用到了哪些Render Filter,开启了哪些中间纹理和管线内置功能。这些都将作为优化选项的参考。

比如项目SV中的 URP Renderer设置中的RendererPath被设置为延迟渲染,这可能给移动平台带来带宽和显存的压力,是优化的重点关注方向
在这里插入图片描述

3. 查看运行时信息以及真机调试情况

切换到IOS或者安卓任意平台之前,可以在setting中勾选Development BuildAutoconnect Profiler,方便后续打包在真机上时查看调试信息。

扫描二维码关注公众号,回复: 14601019 查看本文章

3.1 Unity编辑器模式下

在这里插入图片描述
切换目标平台后,可以在编辑器模式下启动游戏。查看此时游戏是否显示正常,并且唤起编辑器自带的Stats,查看当前场景的平均面数面数峰值渲染批次等信息。 需要对这些性能评估基础数值有所了解。
在这里插入图片描述
上图为IOS平台下游戏运行中的截图。

项目SV中,平均三角形面数大概在150w~200w之间,峰值大约为230w, 渲染批次约为1700~2400次,SetPassCall也在150-230次。这与在移动平台下 一些经验数值有很大差异。 也是性能优化的重点方向之一。

3.2 生成App文件的大小

下图是打包后app在手机里的内存占用大小截图。可以与最终优化生成app大小进行对比,来直观展示优化成果。
在这里插入图片描述

3.3 真机测试(iPhone11)

项目SV使用的测试真机型号为iPhone11,打包之前可以向场景中添加DebugView,方便在手机上查看调试信息。为了保证尽量充分发挥手机性能,在移动平台下关闭垂直同步。
在这里插入图片描述

下面是将SV工程打包到我手机运行时的效果截图。
在这里插入图片描述
我截图没有准确显示出来,运行一段时间后,帧率在23-30之间波动,并且场景内部分贴图出现眼色异常等情况。SV项目在性能上存在一定的问题。

下图是使用Profiler查看在真机下运行时内存情况与性能耗时分布情况
在这里插入图片描述
性能耗时分布方面,CPU耗时不太乐观。
在这里插入图片描述
内存使用方面可以看到iPhone11上大概为0.8G左右。因为我没有安卓手机,后面打包安卓app测试的图之后更新上来。同时可以看到,SV项目在纹理,模型,音效方面的占用内存都与在移动平台下的常规经验值相比严重超标。可以作为资源优化的参考指标

猜你喜欢

转载自blog.csdn.net/wankcn/article/details/126818268