Unity 3D质量设置之间隐藏的差异?

Jok*_*ode 8 c# rendering unity-game-engine ios

我正在努力优化我的iOS游戏,而且我遇到了一个非常奇怪的问题,Unity3D中的质量设置让我完全陷入困境!

我在游戏中通过以下方式设置了4个质量设置:

Edit -> Project Settings -> Quality
Run Code Online (Sandbox Code Playgroud)

四个设置是:简单,良好,美丽,神奇

简短的版本是,无论我在质量设置面板中设置的选项如何,Simple总是表现优于Good.

例如,如果我将Simple和Good设置为对所有渲染选项具有相同的设置,将所有设置设置为最小(阴影关闭,无抗锯齿,1/8纹理等),并在iPad上测试游戏,从不同的默认质量选项开始:

Simple - ~26FPS
Good - ~6FPS 
Run Code Online (Sandbox Code Playgroud)

如果我改变简单以使用1/4纹理,并保留1/8纹理的良好,它仍然执行几乎相同:

Simple - ~24FPS
Good - ~6FPS 
Run Code Online (Sandbox Code Playgroud)

我可以清楚地看到纹理在1/4的简单模式下更好/更详细,但是运行速度比使用1/8尺寸纹理的Good模式快20FPS.

我可以通过附加Unity iOS分析器看到,当在良好模式下运行时,CPU会遭受"开销"的持续负载,这在简单模式下(具有相同的质量设置)不存在.因此,当我从简单到好时,某些东西显然正在发生变化,但它似乎不是我可以从质量设置菜单中更改的任何内容.

从阅读统一手册页面,我得到的印象是,不同的质量设置只是占位符,因为您可以添加/删除选项.但是从我的实验中看,当我开始使用Simple Vs Good(或其他)选项时,还有其他一些变化.

我尝试在Simple/Good中默认启动游戏,并手动切换代码(通过QualitySettings.SetQualityLevel使用C#),我获得了相同的性能.

我觉得我错过了一些关键的东西,但我似乎无法想出这个.

hak*_*ist 2

当您使用质量级别中存在的功能并且需要一些额外的计算时,质量级别可能会产生差异。但是,当您不使用该功能时,质量级别之间就没有区别。如果您想提高 FPS,这里有一些提示

  1. 制作纹理图集以减少绘制调用
  2. 改进更新函数中的计算以及更新函数使用的缓存转换。
  3. 不要在每一帧中搜索组件,在某些情况下你可以使用单例模式
  4. 不要破坏每一帧中的对象。进行对象池。
  5. 改善颗粒排放并尽可能减少排放
  6. 改进着色器。如果您使用移动设备,请使用移动着色器。例如,将漫反射着色器更改为移动/漫反射。

这里有一些有用的链接 对象池视频教程单例模式 Unity3d c#