新手求助,UGUI的jquery 按钮变灰Disable不变灰

21:38 提问
unity3D UGUI中按钮颜色过渡为什么鼠标点击按钮后离开按钮的颜色显示是高亮颜色?
不应该是正常颜色吗?
按赞数排序
同问,楼主解决了吗?感觉是bug呢?
应该导航导致,当你点击按钮一次之后会把焦点放在按钮上,所以点击完之后就是highted 状态。导航改成None就好了
其他相关推荐图片“变灰”处理是再寻常不过的要求了,特别按钮,头像等UI图片的“变灰”处理非常常见。比如:
网上已经有很多的实现方法,但是Unity5.3.8以后,对于使用sprite packer,并将包含透明通道的图片进行etc1格式压缩的图集来说,稍微有些不一样。新的uishader中,加入了
[PerRendererData] _AlphaTex("Sprite Alpha Texture", 2D) = "white" {}
这段代码,用来获取指定位置上的透明通道。我认为unity是将透明通道单独提取出来进行保存,把剩下的rgb通道保存到另一张图片中进行etc压缩。
这就牵扯到图片变灰处理中的一些细节问题,如果我们的图集使用了etc1压缩方式,那么透明通道就需要单独获取,在fragment shader中,我们应该修改原先的操作为:
fixed4 frag(v2f IN) : SV_Target
// 这里首先获取MainTex中的rgb颜色信息
fixed4 colorTex = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.
// 之后获取AlphaTex中的透明通道信息,注意透明通道保存的在r通道中
fixed AlphaTexAlpha = tex2D(_AlphaTex, IN.texcoord).r + _TextureSampleAdd.a;
// 创建color变量,设置透明通道为colorTex.a和AlphaTexAlpha的乘积
fixed4 color = fixed4(colorTex.rgb, colorTex.a * AlphaTexAlpha);
color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
#ifdef UNITY_UI_ALPHACLIP
clip (color.a - 0.001);
color.rgb = Luminance(color.rgb);
计算colorTex.a和AlphaTexAlpha的乘积是为了即使unity没有给我们传递_AlphaTex时,也能让图片正常显示,因为并不是所有的图片都按照sprite packer方式打包。
阅读(...) 评论()}

我要回帖

更多关于 jquery 按钮变灰 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信