0
点赞
收藏
分享

微信扫一扫

Unity 之 发布PC端CPU高占用温度高的问题解决方案

穿裙子的程序员 2022-03-12 阅读 43

Unity 之 发布PC版本CPU高占用问题解决方案

前言

一,问题背景

使用Unity开发的一款游戏,在启动后第一个界面(登录界面),放着不动,过了一会就发了Mac的CPU占用直接爆满,温度也一直在升高。而登录进入游戏大厅界面之后,数据就慢慢恢复正常了。

修改前登陆界面:
在这里插入图片描述


二,尝试解决

尝试过的解决方法:

2.1 尝试方案一

不清楚问什么首个界面会出现这样的情况,于是在加载登录界面前有添加了一个界面,并且添加一个一个键盘按键进入登陆界面的逻辑,除此之外新添加的界面无任何逻辑。

实践后发现情况还是一样,新加界面和登陆界面都有问题。不过这排除了登录界面逻辑有问题的情况

2.2 尝试方案二

使用同版本Unity在同环境下新建工程,测试是否存在此问题;
实践后发现新工程无此问题,那么经过此测试可以猜测是工程设置问题。

经确认是因为:关闭了垂直同步

点击Unity --> Edit --> Project Setting --> Quality,打开QualitySetting面板,有一个VSync Count参数,该参数表示垂直同步。它有三个值可以选择:

  • Don’t Sync : 不同步 – 我工程设置了这个
  • Every V Blank:每隔一个垂直空白同步 – 新工程默认设置
  • Every Second V Blank:每隔两个垂直空白同步

在这里插入图片描述
关于Quality面板的官方API


三,解决方案

经过各种尝试和查找,最终在stackoverflow中看到一个解决方法,是游戏帧率影响的。反推回2.2的尝试方法的思路。

解决问题:
后来我查看了一下代码,原逻辑确实是在进入大厅之后才设置的游戏帧率,在Unity3D中可以通过代码设置来限定游戏帧率
在程序启动后的,自动执行的脚本中的Start方法中添加:

 Application.targetFrameRate = 60;

再次打包运行,就可以看到比较正常的状态了:

修改后:
在这里插入图片描述

四,一个拓展

Application.targetFrameRate:该API设置游戏尝试使用指定的帧率进行渲染;默认情况下该值为-1

表明使用平台的默认帧率进行渲染, 帧率在各个平台有差异:

  • 在PC端,默认帧率就是机器性能上所能达到的最大帧率
  • 对于移动平台,默认帧率是低于硬件能达到的最大帧率的。事实上对于移动平台的最大帧率等于其屏幕的刷新率(比如机器的屏幕刷新率为60Hz,如果targetFrameRate设置-1的话,其最大帧率只能达到60fps)。
  • 对于WebGL,若使用默认帧率,浏览器会选择使用能最优展示效果的帧率。
举报

相关推荐

0 条评论