unity如何通过代码修改Text/button等UI的RGB数值来控制UI颜色

错误的做法

public Text text;
text.color=new color(100,100,100,100);

这样运行以后,ui的颜色一般为白色,无论你设置的是什么数字!

正确做法

public Text text;
text.color=new color(100/255f,100/255f,100/255,100/255f);

格式是new color(你需要设置的数字/255f,你需要设置的数字/255f,你需要设置的数字/255f,你需要设置的数字/255f)

Warning
千万不要忘记加“f”,如果你没有加f,VS上面是看不到错误的,但是你在运行的时候,你的ui颜色将会变为(0,0,0,0)!UI变透明。

原理
比如白色,你在inspector面板上看到他的RGB是(255,255,255,255)。
通过代码控制UI的RGB颜色,他的RGB范围是0~1,比如控制透明度,0表示UI透明,1表示UI完全不透明。R\G\B三个值也是同样的道理。

                                如果它帮助到你了,点个赞再走哦
### 创建适用于 Unity UI 元素的高亮效果 Shader 为了在 Unity 中为 UI 元素创建高亮效果,可以采用自定义着色器的方式。这不仅能够提供更灵活的效果控制,还能确保性能优化。 #### 使用内置资源作为起点 Unity 提供了一系列预构建的着色器,这些可以直接用于 UI 组件并在此基础上进行修改[^1]。对于大多数情况而言,推荐基于 `UI/Default` 或者 `Unlit/Transparent` 这样的基础模板来开发新的着色器脚本。 #### 编写 HLSL 代码片段 下面是一个简单的 HLSL 片段示例,展示了如何通过颜色混合实现基本的高亮功能: ```hlsl Shader "Custom/UIHighlight" { Properties { _MainTex ("Texture", 2D) = "white" {} _HighlightColor ("Highlight Color", Color) = (1,0.5,0,1) _Intensity ("Intensity", Range(0,1)) = 0.75 } SubShader { Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"} Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag sampler2D _MainTex; float4 _HighlightColor; half _Intensity; struct appdata_t { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 pos : SV_POSITION; }; v2f vert(appdata_t IN) { v2f OUT; OUT.pos = UnityObjectToClipPos(IN.vertex); OUT.uv = IN.uv; return OUT; } fixed4 frag(v2f i) : COLOR { // Sample the texture and apply highlight color with intensity factor. fixed4 col = tex2D(_MainTex, i.uv); col.rgb += (_HighlightColor.rgb * _Intensity); clip(col.a - 0.1); // Ensure transparency is handled properly return col; } ENDCG } } } ``` 此着色器允许设置一个 `_HighlightColor` 属性以及调整其强度 `_Intensity` 来改变最终呈现出来的视觉感受。 #### 将新着色器应用于 UI 控件 完成上述工作之后,在 Unity Editor 中选择目标 Button、Image 等控件,并将其材质 Material 的 Shader 字段指向刚刚创建好的自定义着色器即可看到即时变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值