本文主要是介绍Unity中的纯色Shader,给某个UI资源画纯色,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在开发过程中,可能经常会遇到需要给某个UI显示单独显示一个形状或者阴影的问题,这个时候可以使用一个简单的 Shader 来处理这个问题。
先创建一个材质,这里命名为GrayColor,
然后创建一个Shader,这里选中UnlitShader
命名为GrayColorShader,代码如下:
在这里插入代码片
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Unlit/GrayColorShader"
{Properties{[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}_Color ("Tint", Color) = (1,1,1,1)[MaterialToggle] PixelSnap ("Pixel snap", Float) = 0_StencilComp ("Stencil Comparison", Float) = 8_Stencil ("Stencil ID", Float) = 0_StencilOp ("Stencil Operation", Float) = 0_StencilWriteMask ("Stencil Write Mask", Float) = 255_StencilReadMask ("Stencil Read Mask", Float) = 255_ColorMask ("Color Mask", Float) = 15}SubShader{Tags{ "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane""CanUseSpriteAtlas"="True"}Stencil{Ref [_Stencil]Comp [_StencilComp]Pass [_StencilOp] ReadMask [_StencilReadMask]WriteMask [_StencilWriteMask]}Cull OffLighting OffZWrite OffFog { Mode Off }Blend One OneMinusSrcAlphaPass{CGPROGRAM#pragma vertex vert#pragma fragment frag#pragma multi_compile DUMMY PIXELSNAP_ON#include "UnityCG.cginc"struct appdata_t{float4 vertex : POSITION;float4 color : COLOR;float2 texcoord : TEXCOORD0;};struct v2f{float4 vertex : SV_POSITION;fixed4 color : COLOR;half2 texcoord : TEXCOORD0;};fixed4 _Color;v2f vert(appdata_t IN){v2f OUT;OUT.vertex = UnityObjectToClipPos(IN.vertex);OUT.texcoord = IN.texcoord;OUT.color = IN.color * _Color;#ifdef PIXELSNAP_ONOUT.vertex = UnityPixelSnap (OUT.vertex);#endifreturn OUT;}sampler2D _MainTex;fixed4 frag(v2f IN) : SV_Target{fixed4 c = tex2D(_MainTex, IN.texcoord) * IN.color;c.rgb = IN.color.rgb;c.rgb *= c.a;return c;}ENDCG}}
}
保存后需要将shader添加到材质GrayColor上
给材质设置一个颜色,这里以灰色为例:
然后在场景中随意创建一个Image,试试效果,
给Image添加刚刚的GrayColor材质
这个时候就能看到某个灰色的纯色效果
以上就是使用UnityShader某个纯色的效果
这篇关于Unity中的纯色Shader,给某个UI资源画纯色的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!