NGUI图片变灰Shader修改

本文介绍如何通过修改NGUI的shader代码,实现在UI设计中将不可点击的按钮或图片变为灰色显示的方法,包括具体代码实现和相关shader片段函数的修改。
NGUI是强大的插件,但是在UI设计中,很多时候设计者把不可点击的按钮或者图片希望用灰白颜色表示,遗憾的NGUI没有直接提供这样的功能,但是可以通过修改NGUI的几个shader达到这样的效果,我们指定一旦把组件的颜色设置为黑色时,就是默认变灰的效果。以下代码是Shader "Unlit/Transparent Colored"的片段函数修改方法。类似的Transparent Colored的其他几个shader也可以如此修改。如果大家还要更好的方案欢迎讨论。 
 fixed4 frag (v2f i) : COLOR 
                    { 
                    fixed4 col; 
                    if(i.color.r < 0.01 && i.color.g < 0.01 && i.color.b < 0.01 ) 
                    { 
                       col = tex2D(_MainTex, i.texcoord); 
                       float grey = dot(col.rgb, float3(0.299, 0.587, 0.114));   
                       col.rgb = float3(grey, grey, grey); 
                     } 
                     else 
                     { 
                       col = tex2D(_MainTex, i.texcoord)* i.color; 
                     } 
                     return col; 
                }
在Unity中使用NGUI使按钮主要是通过调整按钮的颜色和交互状态来实现。以下是具体步骤和示例代码: ### 1. 调整按钮颜色 可以通过修改按钮的 `UIWidget` 组件的颜色来使其呈现色。一般来说,将颜色的RGB值调整为相同且较低的值,就可以得到色效果。 ```csharp using UnityEngine; using System.Collections; public class ButtonGrayOut : MonoBehaviour { public UIButton targetButton; void Start () { // 获取按钮的UIWidget组件 UIWidget widget = targetButton.GetComponent<UIWidget>(); if (widget != null) { // 设置颜色色 widget.color = new Color(0.5f, 0.5f, 0.5f); } } } ``` ### 2. 禁用按钮交互 为了让按钮看起来是不可用的状态,还需要禁用按钮的交互功能。可以通过设置 `UIButton` 的 `isEnabled` 属性为 `false` 来实现。 ```csharp using UnityEngine; using System.Collections; public class ButtonGrayOut : MonoBehaviour { public UIButton targetButton; void Start () { // 获取按钮的UIWidget组件 UIWidget widget = targetButton.GetComponent<UIWidget>(); if (widget != null) { // 设置颜色色 widget.color = new Color(0.5f, 0.5f, 0.5f); } // 禁用按钮交互 targetButton.isEnabled = false; } } ``` ### 使用方法 1. 创建一个新的C#脚本,将上述代码复制进去,保存为 `ButtonGrayOut.cs`。 2. 将该脚本挂载到一个空的GameObject上。 3. 在Inspector面板中,将需要的按钮拖拽到 `targetButton` 字段中。 4. 运行游戏,按钮就会色且不可交互。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值