NGUI 图片变灰

效果图

NGUI 图片变灰

 

1、先准备好一个变灰shader。代码如下

Shader "Custom/Gray"

{

	Properties

	{

		_MainTex ("Base (RGB), Alpha (A)", 2D) = "black" {}

	}

	

	SubShader

	{

		LOD 200



		Tags

		{

			"Queue" = "Transparent"

			"IgnoreProjector" = "True"

			"RenderType" = "Transparent"

		}

		

		Pass

		{

			Cull Off

			Lighting Off

			ZWrite Off

			Fog { Mode Off }

			Offset -1, -1

			Blend SrcAlpha OneMinusSrcAlpha



			CGPROGRAM

			#pragma vertex vert

			#pragma fragment frag			

			#include "UnityCG.cginc"



			sampler2D _MainTex;

			float4 _MainTex_ST;

	

			struct appdata_t

			{

				float4 vertex : POSITION;

				float2 texcoord : TEXCOORD0;

				fixed4 color : COLOR;

			};

	

			struct v2f

			{

				float4 vertex : SV_POSITION;

				half2 texcoord : TEXCOORD0;

				fixed4 color : COLOR;

			};

	

			v2f o;



			v2f vert (appdata_t v)

			{

				o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);

				o.texcoord = v.texcoord;

				o.color = v.color;

				return o;

			}

				

			fixed4 frag (v2f IN) : COLOR

			{

				float4 col =tex2D(_MainTex, IN.texcoord) * IN.color;

				float grey = dot(col.rgb, float3(0.299, 0.587, 0.114));   

                col.rgb = float3(grey, grey, grey); 

				

				return col;

			}

			ENDCG

		}

	}



	SubShader

	{

		LOD 100



		Tags

		{

			"Queue" = "Transparent"

			"IgnoreProjector" = "True"

			"RenderType" = "Transparent"

		}

		

		Pass

		{

			Cull Off

			Lighting Off

			ZWrite Off

			Fog { Mode Off }

			Offset -1, -1

			ColorMask RGB

			Blend SrcAlpha OneMinusSrcAlpha

			ColorMaterial AmbientAndDiffuse

			

			SetTexture [_MainTex]

			{

				Combine Texture * Primary

			}

		}

	}

}

  

2、制作一个atlas图集prefab

  在Project里选择几个纹理右键->Open Atlas Maker->New->Create

 

3、修改prefab材质 

  点击刚刚生成的atlas图集prefab->Material->导航到Project中我们刚生成的atlas图集prefab所使用的材质->把shader改成Custom/Cray(这个shader就是我们上面那个shader的名字)

 

4、设置到UISprite下看看

 

你可能感兴趣的:(GUI)