Unity根据电脑高中低配置加载不同模型
本文重点在于如何根据电脑的配置
将电脑分成高中低三个等级
而不是如何制作三种精度的模型
(Windows平台)
为什么会有这种需求呢
首先,高品质模型确实可以表达更完整的内容
但是品质越高,给电脑硬件带来的压力也就越大
其次,不能因为想表达高品质模型就舍弃市面上百分之八十的电脑
最后,这也是Unity优化的一项常规手段
我们在玩游戏的时候也都会有最低画质、中端画质、最高画质之间的选择
本文要实现的,就是这部分内容
声明
软件的最低配置需求,最高配置需求
都需要通过不同水平的硬件一步一步测试得来
并且不同的软件对不同的配置要求也是不同的
故,本文只提供一个大体的思路,具体的范围划分不在讨论范围之内
要将电脑分为高中低三挡
就需要对电脑硬件有一定的认知
(本文所写的内容基于本人目前对电脑硬件的认知,欢迎批评指正)
影响电脑配置的因素
1.显卡 2.内存 3.CPU
这里所指出的三个因素是按照对模型的表现能力影响由高到低排序的
当然,影响电脑性能的硬件还有很多
如:主板、固态硬盘、当然电源也不例外
但是,这些跟模型表现确实不挂钩,便不作考虑
1.显卡
决定显卡性能的因素很多,
理想情况是厂商对每块显卡都用唯一ID标识,然后直接通过这个数字划分性能
(然而这只是遐想,实际上并不存在)
首先,需要排除掉集显,集显表达3D模型的能力实在有限
可以直接将其划分为低端机,或者是不做模型显示功能
Unity获取电脑配置信息的API都在SystemInfo类下面
32902这个数值是固定的
当然,NVIDIA GeForce 系列显卡(N卡)为4318
AMD Radeon 系列显卡(A卡)为4098
架构、工艺、流处理器数量、核心频率、显存位宽、显存等
影响显卡性能的因素大致可以这么排序
然而,即便一项数据再重要,API中没有提供,或者无法直接通过数据对比的参数,再重要也是没有用的。。
这是显卡相关的API
这10个API中,唯一能够通过数据量化对比的
只有显存graphicsMemorySize
故,我采取的方式是通过显存将显卡划分为高中低三个等级
高级:graphicsMemorySize>=6000
中级:graphicsMemorySize<6000 && graphicsMemorySize>=2000
低级:graphicsMemorySize<2000
这样分为基本就是GTX 1060以上,即大于6G显存为高级显卡大体这样子
2.内存
内存比较容易判定
首先API只有一个
当然,内存条的频率也是内存性能的一个影响因素
但是没有API便也没有办法了
高级:systemMemorySize>=8000
中级:systemMemorySize>=4000 && systemMemorySize<8000
低级:systemMemorySize<4000
3.CPU
决定CPU的因素大致有下面几个:
架构、核心数目、线程数目、主频、缓存、工艺等
Unity提供了下面几个API
分别是核心数目、主频以及处理器名称
可以使用的只有核心数目和主频名称
首先,核心数目区分不大,四核心CPU数量众多,性能无法得到有效区分
再看主频,4.0+的主频确实是高端CPU,但是3.5左右的CPU也是比较繁杂
所以我将CPU这条只作为一个弱限制因素处理,只作为中端门槛限制
低端:processorCount<2
组合
三个因素分析完毕,接下来就要处理或与非了
首先,木桶原理!
要看短板,即使是2080显卡,配个单核CPU,也需要判定为低端
下面,该贴代码了(插件又找不到了,只能暂时贴图片了)