Unity手机游戏发热发烫优化指南与技巧

news2024/11/16 21:46:57

Unity手机游戏发热发烫优化指南与技巧

很多小伙伴做完游戏后,发布到Android,运行,游戏很流畅,也不卡顿,但是跑一会游戏,手机就发热,发烫。客户提出需求,能否让它不发烫? 本文从以下3方面来分析手机发烫的问题,给大家提供一个解决此类问题的通用思路:

对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习unity的零基础小白,也有一些正在从事unity开发的技术大佬,欢迎你来交流学习。

1手机发烫是如何引起的?为什么要解决发烫问题?

手机可以理解为是一台小型的电脑, 里面运行了很多app。CPU处理完数据和事件后,如果没有任务要处理了,就会休眠下去, CPU占用率也就会下降。休眠下去了,CPU不工作或工作在低功耗模式下了,消耗的电流就没有那么大了。手机电路也会有电阻,电阻+电流就会转化为热能(热能=I*R^2),热能会通过手机的散热导热系统从外壳散去。长时间CPU的工作,就会导致长时间的高负荷电流,从而导致产生大量的热能,如果热能的产生速率大于热能散发的速率,手机表面温度就会升高,也就是我们说的发烫。

“手机发烫”的本质是CPU”很努力不休息”的工作才能保证游戏app的流畅运行,达到额定的帧率。而这个过程中产生热量的速度大于散去热量的速度。所以手机发烫的本质还是CPU处理的事情较多,本质还是要提升程序的性能,让程序能更快的完成从而让CPU有机会休眠或低功耗运行,从而让手机不发烫,所以解决手机发烫的本质问题还是优化提升手机游戏app的代码性能

2 如何定位手机发烫的问题

经过上面的分析,虽然游戏不卡,但是CPU长时间满负荷的工作导致手机发烫,问题本质还是性能优化问题。所以本质还是性能优化的问题。定位手机发烫问题和定位性能问题大体思路与处理方式一样的。接下来我给大家分析几个常用的定位问题的方式和方法。

(2) 手机游戏开发的时候往往会根据游戏的”视觉品质”来进行配置,分为最高等的画质与特效效果,中等画质与特效效果,低端画质与特效效果。我们首先要将用户的机器进行分类,分成高中低三个档次,每个档次的机型我们适配匹配好对应的效果和特效。比如,高端机上跑高质量,中端机跑中质量,低端机跑低质量。当我们接收到用户反馈的手机发烫的时候,首先要根据手机来判断属于哪一档,来进行处理。比如低档机跑高质量的画质肯定会产生卡顿与发烫,这个时候我们要把对应的画面质量与对应的性能做到匹配,做到每个档次的机器在对等的画质上能做到不发热。不要出现机器与画质不匹配与对等的情况。如果出现发烫,我们要统计出来是那个档次画面的哪种机型。比如中画面质量在中档手机上发烫。有时候我们一个档次的画面来适配全部的高中低端机,那么这个时候可以考虑将画面参数进行调节来适配。

(3) 如果同一个档次画面质量在同一档的机型上发热,那么就是性能优化的问题了。我们能做的就是提升程序的性能,让CPU有更多的休眠时间,从而解决发热。做性能优化定位问题的时候我们要确定好是哪个部分占用的CPU+GPU资源导致发热。一个一个模块的排查: 渲染模块,物理引擎模块,逻辑算法模块,其它,排查的时候,我们一般会一个一个的内容重建,比如,排查渲染模块,我们可以只做渲染,做同等规模的游戏地图与渲染单元,查看运行结果,分析CPU占用率,看是否引起发烫。物理引擎模块可以通过增加和减少物理计算单元来定位是否为物理引擎的问题。隔离掉逻辑算法代码,看CPU占用率是否有改善。如此根据自己的游戏逻辑逐步定位性能热点。

(4) 在游戏开发项目中,越早进行机器的性能测试,是否发热等指标,能帮助我们快速的定位是加入了哪些功能导致了机器发热,同时测试机器最好都准备几个有代表性高中低端手机。一般我们做项目的时候,每个礼拜都会完整的真机测试有代表性的机器。

(5) 超规模的资源占用,导致OS操作系统的系统进程CPU占用率飙升。比如系统的内存时1G,你游戏的内存占用了2G,这样可能会导致操作系统不断的与磁盘swap进行数据交换释放物理内存来满足内存访问,从而导致系统负担过重,系统进程服务的CPU占用率飙升,导致手机发烫。

3 针对性常用优化手段与策略?

接下来给大家列举一些针对性的优化方向供大家参考和指导,每一项优化都有很多资料,具体的操作大家可以查找相关的资料,或者查阅我们往期相关的优化技巧。

(1) 做好高中低端机型的适配, 高端手机上高端效果,低端手机上低端效果,比如高端手机正常,低端手机发烫,可以针对低端机考虑关闭光照计算,关闭阴影计算,切换一些更简单的shader, 关闭一些特效。 指定一些规则,然后游戏运行后自动判定分类手机的类型,来开关相关的参数。

(3) 渲染常用的优化手段: 优化渲染规模,使用增强细节的手段来代替模型面数,提升shader性能。空间换时间来提前预制烘培,合并drawcall, 减少set pass call,优化动画组件将顶点动画烘培到纹理中。等等。

(4) 物理引擎的常用优化手段: 修改物理引擎迭代计算的参数,降低刚体迭代的数目,使用更高效的方式替代物理引擎。等等。

(5) 优化数据结构内存占用与算法: 缓存池减少节点反复大规模的删除与创建,优化算法,降低算法复杂度,空间换时间(预先计算好结果存储起来,运行时查表即可),时间换空间,多线程优化等。可以把部分的计算放到GPU中。等等。

定位好问题,认真分析后针对性的来解决对应的点就可以了。我们大部分的同学不会做性能调优主要是问题定位没有思路,定位不准确,技术手段不熟练,从而导致了找不到问题,找到了问题不知道下什么手段。进入小组可以获得更多性能调优的文章与课程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/63726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何用一颗芯片实现5V转正负12V

有时在一些运算放大电路中我们需要同时有正电源和负电源, 但是我们输入一般只有一个正电源,比如我们输入的电源是5V,但是需要将5V转换成正负12V 5V转12V的话我们可以用BOOST电路进行升压,电路图如下 而5V转-12V的话一般有负压电荷…

osgEarth示例分析——osgearth_tracks

前言 osgearth_tracks示例,演示了所有图标沿着路径进行移动(路径是不可见的)。 执行效果 执行命令:osgearth_tracksd.exe earth_image\world.earth 右下角的控制面板功能: Declutter 是否开启 【清理器】 功能。 即当两个图标靠近时&…

HTML期末学生大作业-使用HTML+CSS技术仿传智博客网站

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

今日财富杂志今日财富杂志社今日财富编辑部2022年第21期目录

经济纵横 资产证券化税收政策的国际比较与启示 李依莎; 1-3 中小企业知识产权保护的困境 程诗鸿; 4-6 县级政府在优化营商环境中的作用 李晓春; 7-9《今日财富》投稿:cnqikantg126.com 地域文化背景下论房地产经济发展的区域差异 周莹; 10-12 国…

这把联网智能门锁体验感A+

如果来一次古人与今人的谈话,那一定离不开的话题就是“智能设备”。智能手机、智能电脑、智能手表更新换代如此之快,联网智能门锁亦是如此。对于用户而言,使用智能设备最重要的就是“体验感”了,小编为大家强势推荐中科易安QY-170…

开源多波束前视声呐目标识别数据集

鉴于水下实验的高成本,高专业性,高复杂度的情况,开源水下数据集一直较为稀少。拥有数据的研究机构基本上也只限于自身使用。虎鲸开源计划致力于构建一个开放的实验平台,实验场地、硬件、软件、数据均在开源开放的范畴内。虎鲸开源…

Spring Cloud(十四):微服务灰度发布 --- Discovery

灰度发布微服务全链路灰度全链路灰度设计思路 标签路由节点打标流量染色分布式链路追踪 ThreadLocal流量治理平台 Nacos 配置中心 全链路灰度实现Discovery使用 一、父pom引入Discovery二、Gateway 引入 — 网关 discovery-plugin-strategy-starter-gateway三、微服务 引入 — …

[附源码]JAVA毕业设计论文管理系统(系统+LW)

[附源码]JAVA毕业设计论文管理系统(系统LW) 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术:…

Allegro如何使用快捷键快速切换层面操作指导

Allegro如何使用快捷键快速切换层面操作指导 Allegro可以用快捷键快速切换层面,比如在command下方输入数字1,可以自动打开top层 具体操作如下 打开系统属性,选择环境变量 找到home的环境变量的路径是哪里 找到路径下的pcbenv文件夹 找到env文件 用记事本打开env文件…

自学软件测试,学到什么程度可以出去找工作?

其实初级测试学的东西并不多,如果脱产学习的话2~3个月差不多就能简单入门。 另外不要担心,初级测试对于Python/Java编程,自动化测试,性能测试这些都是初步的了解和学习。如果说要深度掌握,那确实是还需要很多时间。 …

【pen200-lab】10.11.1.10

pen200-lab 学习笔记 【pen200-lab】10.11.1.10 🔥系列专栏:pen200-lab 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年12月5日🌴 🍭作者水平很有限,如果发现错误,还望告知,感谢! 文章目录 pen200-lab 学习笔记信息收集拓展信息收集 只开放了…

61张图,图解Spring事务,拆解底层源码

下面我会简单介绍一下 Spring 事务的基础知识,以及使用方法,然后直接对源码进行拆解。 不 BB,上文章目录。 ​1. 项目准备 需要搭建环境的同学,代码详见:https://github.com/lml200701158/program_demo/tree/main/spr…

09-18-k8s-二进制方式搭建

09-k8s-二进制方式搭建: 1、创建多台虚拟机,安装Linux操作系统 (1)一台或多台机器,操作系统 CentOS7.x-86_x64 (2)硬件配置:2GB 或更多 RAM,2 个 CPU 或更多 CPU&…

大数据_数据中台_数据汇聚联通

目录 一、数据采集、汇聚的方法和工具 1、线上行为采集 2、线下行为采集 3、互联网数据采集 4、内部数据汇聚 二、数据交换产品 1、数据源管理 2、离线数据交换 3、实时数据交换 三、数据存储的选择 1、在线与离线 2、OLTP与OLAP 3、存储技术 构建企业级的数据中台…

Java swing(GUI) mysql实现的仓库进销存管理系统源码+运行教程

今天给大家介绍下由Java swing mysql实现的一款仓库库存管理系统,该系统实现了基本的仓库进退货管理、用户管理等操作,主要涉及的知识点有:Java swing awt界面编程、数据库的基本操作(增删改查),多线程等&a…

第十二章:synchronized与锁升级

相关面试题锁优化背景Synchronized 锁性能变化jdk5 以前复习:为什么任意一个对象都能成为锁?jdk6 之后synchronized的种类以及锁升级流程锁升级流程无锁偏向锁是什么作用小总结偏向锁的持有偏向锁 JVM 参数说明多线程环境下总结轻量级锁轻量级锁的获取代…

Java成员方法的声明和调用

声明成员方法可以定义类的行为,行为表示一个对象能够做的事情或者能够从一个对象取得的信息。类的各种功能操作都是用方法来实现的,属性只不过提供了相应的数据。 一个完整的方法通常包括方法名称、方法主体、方法参数和方法返回值类型,其结…

6-脱氧-β- L -半乳吡喃糖基鸟苷 5′-二磷酸,Guanosine 5‘-diphospho-fucose,GDP-BETA-L-FUCOSE

产品名称:6-脱氧-β- L -半乳吡喃糖基鸟苷 5′-二磷酸,GDP-L-岩藻糖,GDP-L-FUCOSE二钠盐 英文名称:Guanosine 5-diphospho-fucose,GDP-BETA-L-FUCOSE,GDP-L-Fuc.2Na CAS号:148296-47-3 英文同义词:Guanos…

【深度学习】常用算法生成对抗网络、自编码网络、多层感知机、反向传播等讲解(图文解释 超详细)

觉得有帮助请点赞关注收藏~~~ 一、生成对抗网络GAN Generative Adversarial Network 两个组件组成:一个生成器,用于生成虚拟数据,另一个是鉴别器,用于(GAN)生成式深度学习算法,可创建类似于训练数据的新数据实例。 G…

2022-kaggle-nlp赛事:Feedback Prize - English Language Learning

文章目录零、比赛介绍0.1 比赛目标0.2 数据集0.3 注意事项一、设置1.1 导入相关库1.2 设置超参数和随机种子1.3 启动wandb二、 数据预处理2.1 定义前处理函数,tokenizer文本2.2 定义Dataset,并将数据装入DataLoader三、辅助函数四、池化五、模型六、定义…