移动设备发热原因
Unity工程运行在移动设备上,移动设备发热的主要原因主要有三方面:CPU,GPU和IO的负载过高。CPU负载过高原因:1、在Update/LateUpdate/FixedUpdate中做大量的逻辑运算;2、ProjectSetting->Time->Fixed timestep数值设置不合理,导致FixedUpdate执行频率过高;3、不好的代码习惯(过多过频繁的GetCompone
·
Unity工程运行在移动设备上,移动设备发热的主要原因主要有三方面:CPU,GPU和IO的负载过高。
-
CPU负载过高原因:
1、在Update/LateUpdate/FixedUpdate中做大量的逻辑运算;
2、ProjectSetting->Time->Fixed timestep数值设置不合理,导致FixedUpdate执行频率过高;

3、不好的代码习惯(过多过频繁的GetComponent、Object.Find等等);
4、不做动态/静态batching,UI图集分类不合理等等,导致过多的draw call
5、复杂的脚本及物理、布料模拟,粒子模拟等;
6、复杂的数学运算(是否可通过查找表的方式来替代)
7、过高的网络发包频率
-
如何降低CPU负载:
可以使用UPR工具( https://upr.unity.com/ )对运行在移动设备上的项目进行全面的测试分析,从测试报告中定位性能瓶颈,进行优化。

-
GPU负载过高原因:
GPU负载过高的根本原因是,过多的顶点、片元,过多的逐顶点、逐片元计算。
-
如何降低GPU负载:
1、优化几何体三角面片数量,根据情况可以使用LOD;
2、调整不透明贴图的压缩格式;
3、减少FPS,可以设置ProjectSetting-> Quality中的VSync Count参数或者手动调节 Application.targetFrameRate;

4、使用遮挡剔除技术减少overdraw,降低GPU负载;
5、尽量少用半透明材质,合理控制绘制顺序;
6、减少实时光照和阴影;
-
IO带宽:
使用大量未经压缩的纹理及使用过高分辨率会造成IO带宽的性能瓶颈
-
降低IO带宽压力的优化思路:
1、使用mipmap技术避免加载不必要的像素数目访问;
2、对于不用的设备使用不同的分辨率Screen.SetResolution.避免过高的分辨率导致帧缓存。
更多推荐
所有评论(0)