[Unity学习教程] Unity针对高低端机型的优化

[复制链接]
查看1305 | 回复0 | 2023-8-23 11:45:03 | 显示全部楼层 |阅读模式 来自 中国北京
1.为什么要区分高低端机型

我们在制作游戏项目时,画质和流畅度都好坏常重要的。市面上的游戏装备百花齐放,各大厂商推出不同型号、不同性能的装备来满意大众的需求。
一款游戏的画质和流畅度是决定游戏能否脱销的关键,而画质和流畅度又须要靠装备来支持,不同性能的装备会导致游戏产生不同的效果,这是最让人头疼的。辛苦开辟的游戏不能在某些装备上顺畅地运行起来,出现画质糟糕、画面过慢、画面卡顿,甚至瓦解等问题,影响了游戏的可玩性,也影响了游戏在市场上的远景。
为了让市场上不同机型的装备都能流畅地运行游戏,我们须要区别对待,比如,在高端机型中利用画质好的画面,而在低端机型中利用差一点的画质。由于低端机型内存低,CPU性能差,装备中部件之间的共同并没那么好,以是,假如让其利用高端机型的画质,运行就会不流畅。
2. 如何处理高低端机型的画诘责题

高低端机型的区别对待,我们可以从以下几个方面入手。
(1)UI贴图质量区别对待

针对不同的机型,分别利用不同的两套UI贴图,此中一套是针对高端机的,无任何压缩,无缩小;另一套是针对低端机的,对UI贴图进行了压缩,且缩小了UI贴图的巨细。后面我们会详细解说如安在游戏中利用NGUI和UGUI无缝地切换高低质量的UI画面。
(2)模子和特效利用资源区别对待

针对不同的机型,分别利用不同的特效和模子,将资源分为1、2、3、4、5这五个品级,针对不同的装备利用不同的品级。
特效在项目中最常见、也利用得最频仍,高质量的特效能直接导致低端机卡顿,因此,在低端机中要更换低质量的特效,甚至在非关键部位可不利用特效。低面数模子则可以减轻渲染时GPU的负担。
(3)阴影的利用情况区别对待

针对不同的机型,分别利用不同质量的阴影,大概不利用阴影。
场景中的模子物体越多,材质球数目就越多,实时阴影的盘算量与渲染量也就越多。在低端机上保持顺畅是第一位的,假如能不利用阴影那是最好的,直接省去了阴影的盘算。假如一定要利用,那我们也有办法减低阴影盘算和渲染的消耗。
下面是针对高低端机型对阴影处理的几种方法。
方法1:利用Unity3D提供的阴影渲染设置接口,通过QualitySettings.shadowResolution设置渲染质量,QualitySettings.shadows设置有无和模式,QualitySettings.shadowProjection设置投射质量,QualitySettings.shadowDistance设置阴影表现间隔,QualitySettings.shadowCascades设置接受灯光的数目等。
在高端机上利用高质量阴影渲染设置,在中端机上利用中端阴影渲染设置,在低端机上则利用低端阴影渲染设置,甚至可以关闭阴影渲染设置。
方法2:关闭传统的阴影渲染设置,以简单的底部圆形玄色阴影面片取代。
用一些简单的阴影面片更换阴影,用内存更换CPU。这样就省去了盘算阴影的CPU消耗,还能瞥见在底部存在阴影。
方法3:静态阴影烘焙。场景内的物体大多是不会动的,我们可以接纳烘焙的方式来镌汰一些实时的阴影算力。
(4)团体贴图渲染质量区别对待

针对不同的机型,分别利用不同的贴图渲染质量。
Unity3D中可对贴图渲染质量进行设置,QualitySettings.masterTextureLimit的API默认是0,就是不对贴图渲染进行限定,假如设置为1,就是渲染1/2巨细的画质,相当于压缩全部要渲染的贴图巨细至原先的1/2巨细,假如设置为2,就是渲染1/4画质,以此类推。
对全部贴图进行渲染限定是一个大杀器,能直接让CPU和GPU的消耗下降,但画质也遭到了扑灭性的打击,我们须要它在低端机上发挥作用,但也要审慎利用。
3. 怎么用步伐区分高低端机型

下面是区分高低端机型的几个方法。
1)Apple机型。究竟iOS的型号是有限的,因此可以把此中一些型号的机子归类为高端,另一些型号的机子归类为中端,另有一些型号的机子归类为低端。Unity3D中的API有可以用的接口,比方,UnityEngine.iOS.Device.generation==UnityEngine.iOS.DeviceGeneration.iPhone6等,以此类推,就能区分Apple机型了。
2)Android等其他机型。由于机子型号太多,我们可以用CPU型号、内存巨细、系统版本号、屏幕分辨率巨细、匀称帧率等判定是高端机照旧低端机。
比方,3GB内存或以上的为高端机,1GB或以下的是低端机,其他为中端机。也可以根据系统的版本号来判定,Android 9.0以上的为高端机,Android 6.0以下的都是低端机,其他为中端机,又大概分辨率大的为高端机等。不过,通过一些简单的规则将高低端机型区分开来会有很大问题,比方,有些盗窟机内存很大,CPU却很烂,安卓版本很高,但内存却很小,以是我们盼望有一个综合思量硬件的系数,可以为每个硬件给出一个评分,末了将CPU型号、内存巨细、系统版本号、屏幕分辨率巨细、GPU型号这几个硬件的评分综合起来,得出一个总分,用这个分数来判定是高端机、中端机抑或是低端机,这样会比力公道一些。
除了上述区分方法,还可以通过匀称帧率来判定高低端机型。
在游戏中参加统计匀称帧率的步伐,将机型型号、CPU型号和匀称帧率发送给服务器端,由服务器记录各机型型号的匀称帧率,再统计出一份报表给客户端,客户端根据这份统计报表来决定哪些机型型号是高端装备,哪些机型型号是低端装备。得到数据后,再通过设置不同级别的画质来优化高低端装备的游戏流畅度。
区分高低端机型时,我们可以将这三种方法一起利用,由于Android中有一些是有固定名称大概编号的机型,我们可以很方便地确定它的类型,有些没有确定型号,就须要通过了解装备的硬件情况来确定机型了,那些完全不能确定机型的,就只能在统计中得到答案了。
4. UI贴图质量的区别对待

在针对不同机型优化时,UI贴图质量的区别对待是一个比力重要的伎俩,下面将对此方法进行详细先容。
在开辟游戏时,免不了要针对不同机型做不同的处理,让游戏在高画质和低画质之间切换,在判定装备的情况后,可以实时切换游戏品格,让游戏更加流畅。
NGUI和UGUI的切换方式有所不同,NGUI基于图集Atlas,而UGUI是基于Image Unity3D4.6.1后的Sprite 2D的。UI画质切换在NGUI和UGUI里都是基于两套图和两套Prefab实现的。它们的共同特点是,全部原生态的高画质(HD)Prefab都利用脚本工具天生相应的标准画质(SD)Prefab。
可利用步伐把高清UI和标清UI做成两个不同的Prefab,两个UI的功能是类似的,只是对应的图集质量不同罢了。然后在高端机型中运行高清UI,在中低端机型中运行标清UI,这使得不同的机型都能流畅地运行游戏,而且它们拥有类似的功能。
这个天生高低画质Prefab的步伐的运行的步调是,先把全部UI用到的图集、材质球都复制一份到固定文件夹下,再复制一份Prefab存放在文件夹下面,并让Prefab里与图集有关的变量都指向标清材质球大概标清图集,也可以是标清单张图。
下面来看看实时切换高清和标清UI时的详细步调。
将一套UI图复制成两套图。一套高清,一套标清,高清Prefab指向高清图,标清Prefab指向低清图。
这里NGUI和UGUI中利用的方法不同。NGUI须要制作两个Atlas Prefab,再通过修改内核将Atlas实时更换掉,也可以复制并制作另一个SD UI Prefab,只改变Atlas中指向标清画质的部分。UGUI轻微复杂一点,但原理差不多,虽然它不能实时改变图集来切换高清画质和标清画质,但也可以通过制作一个SD Prefab来到达高清和标清切换的目标。步调是,起首复制全部图片到SD文件夹,并加上前缀SD,这样好辨认,然后复制一个类似的UI Prefab,将其定名为SD UI Prefab,再把复制过来的SD UI Prefab里的图都换成SD里的图。这样,高清和标清UI Prefab都有了类似的逻辑,只是指向的图不同而已。
步伐是选择SD照旧HD,只须要关注Prefab的名字即可。Prefab名字在高清和标清之间,只是前缀不一样,高清的前缀为HD大概没有前缀,而标清的文件名前缀同一设置为了SD,以是加载时很容易通过前缀名区分开来。
NGUI和UGUI制作SD Prefab的流程可以通过编写一个脚本步伐一键搞定,就不消再手动一个个复制,一个个修改了。
在开辟过程中,我们只要维护好HD UI Prefab就可以了,在打包前利用脚本一键构建SD UIPrefab能节流不少时间,提高服从。
这样一来,在制作过程中,我们不消再关心SD的事情,完全可以只把留意力和精力会合在做好高清的UI图上。关于标清SD的问题,脚本步伐已经帮我们全部搞定。
5.后续

一连关注,后续会增长《区分装备高中低配》的代码实现。

来源:https://blog.csdn.net/qq_34035956/article/details/127485638
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则