Unity3D游戏 设置Quality

在网游页游的设置菜单中,总会看见渲染质量的设置,分为高中低三档。有的是高低2档。

怎么在unity3D项目里快速的切换状态。

unity3D的QualitySettings类,提供给我们一些接口,来改变项目的整体显示效果的控制,比如pixel light的数量,阴影的质量,纹理质量,骨骼动画时候每个顶点受几根骨骼影响等。

除此之外,是否还能有别的控制,比如,人物的材质的光照细节的改变。比如从NormalMap的Specular光照模式改变到vertex Normal的Specular光照模式,或者从Specular变换到diffuse,从diffuse变换到texture color的无光照模式。

当然可以通过换材质换shader来实现,但是这样做太繁琐。

这里提供一个更好的方法来实现。

unity的shader中,有一个LOD的参数,每个SubShader里面,有一个LOD的参数,用来指定当前SubShader的LOD等级。这个等级什么作用呢?在代码中,Shader类有一个成员maximumLOD,这个maximumLOD控制了这个shader的最大的LOD层级。我们可以在shader文件中,写多个SubShader,指定不同的LOD数,比如第一个SubShader的LOD为400,采用了Specular的光照模式,第二SubShader的LOD为200,采用了Diffuse的光照模式。当使用该shader 的 maximumLOD设置为401,在渲染的时候,使用LOD为400的SubShader。maximumLOD设置为201的时候,使用LOD为200的SubShader。如果shader中没有LOD符合的SubShader,则会使用FallBack中的shader来渲染。

那么,只要遍历场景中的MeshRenderer和SkinMeshRenderer,找到对应材质的shader,来设置maximumLOD,便可以切换渲染方式了。

你可能感兴趣的:(Unity3D,unity3D)