Unity GPU 性能优化

  • 遇到的问题
  • 分析工具
  • 解决方法
  • 1.不在代码层面的优化方法
  • 2.部分在代码层面进行优化
  • 特别说明


遇到的问题

因为项目中采用的主机为工控机,不带有独立显卡,CPU采用的是i7-8750H,集显型号620
在运行中GPU长期处于高占用、高功耗运行。

分析工具

  1. Unity自带的Profiler(虽然有很大误差,但只是作为分析帧数和卡顿脚本的话是够用的)。
  2. windows的任务管理器,在性能中可以看到大致的占用率。

解决方法

unity 判断GPU bound还是CPU bound unity gpu占用_c#

1.不在代码层面的优化方法

  1. 上图中右侧为对系统启动环境的设置,根据自身系统的情况可以多做几次适合的调整(分辨率均为16:9的屏幕可选分辨率),这样的操作是在发布系统启动的分辨率设置界面中设置。
    如图中的图形质量等级,Unity编辑器是有六个等级可以选择的。设置方法为 Edit-Project Setting-Quality(质量) 中
    在这里可以设置不同的差异等级。

2.部分在代码层面进行优化

  1. 对于第一点的优化方式如果需要取消分辨率设置界面,可以通过代码进行调整。
Screen.SetResolution(1366, 768, true);    //设置分辨率大小
QualitySettings.SetQualityLevel(3, true);   //设置图形质量等级
  1. 在关闭垂直同步的图形质量等级下
Application.targetFrameRate = 30;   //强制帧率

这句代码生效(PS:在没关闭的是无法设置的)

关闭垂直同步的方法:

打开 Edit-Project Setting-Quality(质量)的等级下找到V Sync Count(垂直同步数)就可以修改这个等级的垂直同步数,将垂直同步数改为Don’t Sync即可对帧率进行调整。

unity 判断GPU bound还是CPU bound unity gpu占用_分析工具_02

特别说明

这篇文章意在帮大家做一些基础的性能优化,没有对代码做出大改动,在Profiler中可以看到突然降帧的脚本函数是什么,锁定问题所在后更改即可
因为笔者所知甚浅,只能做一些基础的工作,对于在底层的优化方式还所知甚少,希望看到的大佬可以私信教导。不胜感激。

参考的大佬文章:

  1. Unity性能优化.
  2. Unity优化之CPU与GPU.
  3. Unity3D降低性能方法.