NGUI中的Button几乎是最常用到的控件之一,并且可以组合各种组件(比如UIButtonColor,UIButtonOffset,UITweenxx),方便设置Button的各种状态下的属性,几乎可以满足我们的所有需求。
但是对于当Button的isEnabled属性设置为false时,根据设置的disableColor属性设置不可点击时的颜色时,虽然我们设置的灰色,但并不是我们想象中的样子!
设置的是灰色,实际运行结果却还是彩色的,只是暗了一点,并不能够很好地表现出其“禁用”的状态!
1.原理
Unity3d中所有的渲染都是基于Shader的,而Shader绑定在Material上,打开一个NGUI例子中自带的Material,得到其使用Shader的文件
NGUI中大部分材质都使用的Unlit/Transparent Colored(PS:虽然在Unlit下,但并不是Unity3d内置的,而是NGUI扩展的)
找到其片段着色器,代码如下:

本文探讨了Unity3D中NGUI的UIButton在禁用状态下无法正确显示灰色的问题。通过分析Shader工作原理,指出NGUI默认的变暗效果并不理想。作者提出通过修改Shader,在遇到特定颜色时渲染灰色纹理的解决方案,避免了因禁用状态增加额外纹理导致的资源浪费。最终展示了修改后的Shader成功实现了预期的灰色效果。
最低0.47元/天 解锁文章
2161

被折叠的 条评论
为什么被折叠?



