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,也需要判定为低端
下面,该贴代码了(插件又找不到了,只能暂时贴图片了)
转载于:https://www.cnblogs.com/fws94/p/10143958.html
Unity根据电脑高中低配置加载不同模型相关推荐
- 3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)
1.外部配置加载顺序 SpringBoot也可以从以下位置加载配置: 优先级从高到低 高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置 1.命令行参数 所有的配置都可以在命令行上进行指定 ...
- Spring boot外部配置加载顺序
外部配置加载顺序 Spring boot 可以从以下位置加载配置 优先级从高到低 高优先级的配置,覆盖低优先级的配置 所有的配置,会形成互补配置 官网,给出了17个位置 这里,只介绍常用的11个位置 ...
- SpringBoot_配置-外部配置加载顺序
接下来我们再来看SpringBoot的一个特点,外部配置的加载顺序,也就是说,SpringBoot我们要写一些配置,配置可以写在我们的配置文件,application.properties,放到类路径 ...
- 二、SpringBoot配置-简述配置加载原理
springboot使用一个全局配置文件 application.properties application.yml 配置文件放在src/main/resources目录或者类路径/config下 ...
- 关于flume配置加载(二)
为什么翻flume的代码,一方面是确实遇到了问题,另一方面是想翻一下flume的源码,看看有什么收获,现在收获还谈不上,因为要继续总结.不够已经够解决问题了,而且确实有好的代码,后续会继续慢慢分享,这 ...
- 配置文件加载位置||外部配置加载顺序||自动配置原理
配置文件加载位置 SpringBoot会从这四个位置全部加载主配置文件:互补配置: 外部配置加载顺序 自动配置原理 1.自动配置原理: 1).SpringBoot启动的时候加载主配置类,开启了自动配置 ...
- 对集合变量定义赋值_SpringBoot配置加载原理(自定义加载配置)
前言 在SpringBoot应用程序中会有很多的地方定义配置文件,如: bootstrap.properties application.properties 或者是SpringCloud中定义的远程 ...
- Dubbo(十)之配置加载流程
转载自 Dubbo配置加载流程 Dubbo 中的配置加载流程介绍 此篇文档主要讲在应用启动阶段,Dubbo框架如何将所需要的配置采集起来(包括应用配置.注册中心配置.服务配置等),以完成服务的暴露和 ...
- Soul网关源码阅读(九)插件配置加载初探
Soul网关源码阅读(九)插件配置加载初探 简介 今日来探索一下插件的初始化,及相关的配置的加载 源码Debug 插件初始化 首先来到我们非常熟悉的插件链调用的类: SoulWebHa ...
最新文章
- 8、MySQL表锁、行锁和页锁
- nginx 转发_除了转发和负载均衡,nginx又一次让他玩出新高度
- Excel有用的函数(ISBLANK,IF,LEFT,VALUE)
- css-样式的权重-圆角-rgba
- matlab isa函数,使用函数编写简单测试用例
- hdu 2078 复习时间
- linux 内核编号含义_linux内核(kernel)版本号的意义
- ueditor 编辑器增加css样式_Web入侵之利用编辑器漏洞入侵
- Mahout-Pearson correlation的实现
- 基于javaweb的银行柜员绩效考核系统
- VS2017编译配置和使用LOG4CPP
- Java面试宝典(超级详细)
- Java三大主流框架
- 如何免费在线将pdf转换成jpg图片
- 为什么学校计算机没有声音,电脑为什么没声音,教您电脑为什么没声音
- matlab篮球队需要五名队员,球队战绩影响因素分析.doc
- 军用计算机ip等级是什么,加固计算机的IP防护等级是什么?
- 线性回归分析中的哑变量
- ARM嵌入式主板在激光雕刻机领域的应用
- 2019年自考计算机应用基础(实践),2019年自考计算机应用基础试题练习(九)
热门文章
- SQL 使用总结五(杂记)
- tensorrt安装_[深度学习] TensorRT安装
- 正则表达式 正整数_史上最全的正则表达式 (1) -- 校验数字的表达式
- 用指针比较三个数大小_《测量力的大小》教案
- uniapp 开发h5 优化加载速度
- video 全屏显示
- 计算机硬件能够直接识别的语言是英语,计算机硬件能直接识别、执行的语言是()...
- 出版物发行单位是指哪些_上海办理出版物经营许可证都需要哪些手续和资料?...
- c++ 删除vector里面的第一个元素_C++提高第三篇2 STL常用容器 vector
- 2021高考成绩答题卡查询,明天用的2021高考答题卡,提前瞅一眼