遇到的问题
因为项目中采用的主机为工控机,不带有独立显卡,CPU采用的是i7-8750H,集显型号620 在运行中GPU长期处于高占用、高功耗运行。
分析工具
- Unity自带的Profiler(虽然有很大误差,但只是作为分析帧数和卡顿脚本的话是够用的)。
- windows的任务管理器,在性能中可以看到大致的占用率。
解决方法
1.不在代码层面的优化方法
- 上图中右侧为对系统启动环境的设置,根据自身系统的情况可以多做几次适合的调整(分辨率均为16:9的屏幕可选分辨率),这样的操作是在发布系统启动的分辨率设置界面中设置。
如图中的图形质量等级,Unity编辑器是有六个等级可以选择的。设置方法为 Edit-Project Setting-Quality(质量) 中 在这里可以设置不同的差异等级。
2.部分在代码层面进行优化
- 对于第一点的优化方式如果需要取消分辨率设置界面,可以通过代码进行调整。
Screen.SetResolution(1366, 768, true); //设置分辨率大小
QualitySettings.SetQualityLevel(3, true); //设置图形质量等级
- 在关闭垂直同步的图形质量等级下
Application.targetFrameRate = 30; //强制帧率
这句代码生效(PS:在没关闭的是无法设置的) 关闭垂直同步的方法: 打开 Edit-Project Setting-Quality(质量)的等级下找到V Sync Count(垂直同步数)就可以修改这个等级的垂直同步数,将垂直同步数改为Don’t Sync即可对帧率进行调整。
特别说明
这篇文章意在帮大家做一些基础的性能优化,没有对代码做出大改动,在Profiler中可以看到突然降帧的脚本函数是什么,锁定问题所在后更改即可 因为笔者所知甚浅,只能做一些基础的工作,对于在底层的优化方式还所知甚少,希望看到的大佬可以私信教导。不胜感激。
参考的大佬文章:
- Unity性能优化.
- Unity优化之CPU与GPU.
- Unity3D降低性能方法.
|