Skip to main content
 首页 » 资源教程 » Unity3D教程

【Unity3D】【NGUI】选中某个图标后高亮(或者灰化)

2016年09月04日 16:59:2313680

需求

点击怪物头像后,头像高亮。(限制:高亮值只能一样)

方法

复制Unlit - Transparent Colored.shader,进行修改(最后有完整shader



[csharp] view plain copy
  1. Shader "Unlit/Transparent Colored"   


改为


[csharp] view plain copy
  1. Shader "Unlit/Transparent Colored (Bright)"  


2、


[csharp] view plain copy
  1. Properties  

  2.     {  

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

  4.     }  


改为


[csharp] view plain copy
  1. Properties  

  2.     {  

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

  4.         _Bright("Brightness", Float) = 2  

  5.     }  

3、



[csharp] view plain copy
  1. sampler2D _MainTex;  

  2. float4 _MainTex_ST;  


改为


[csharp] view plain copy
  1. sampler2D _MainTex;  

  2. float4 _MainTex_ST;  

  3. float _Bright;  

4、



[csharp] view plain copy
  1. fixed4 frag (v2f i) : COLOR  

  2. {  

  3.     fixed4 col = tex2D(_MainTex, i.texcoord) * i.color;  

  4.     return col;  

  5. }  


改为


[csharp] view plain copy
  1. fixed4 frag (v2f i) : COLOR  

  2. {  

  3.     fixed4 col = tex2D(_MainTex, i.texcoord) * i.color;  

  4.     col.rgb = _Bright * col.rgb;  

  5.     return col;  

  6. }  

5、保存名字为Unlit - Transparent Colored (Bright).shader


创建新的Atlas

【Unity3D】【NGUI】选中某个图标后高亮(或者灰化) Unity3D教程 第1张

复制Atlas和Material,如上图是Wooden Atlas 1(两个分别是Atlas和Material)

将Atlas Wooden Atlas 1的Material指定为Wooden Atlas 1

修改新的Material

【Unity3D】【NGUI】选中某个图标后高亮(或者灰化) Unity3D教程 第2张

增加亮度

【Unity3D】【NGUI】选中某个图标后高亮(或者灰化) Unity3D教程 第3张

修改Brightness即可(注意:修改后窗口可能不能立即显示效果,需要强制刷新对应的Panel)

【Unity3D】【NGUI】选中某个图标后高亮(或者灰化) Unity3D教程 第4张

应用

代码里面,用的时候将对应的sprite的atlas指定为新的atlas即可。


效果

【Unity3D】【NGUI】选中某个图标后高亮(或者灰化) Unity3D教程 第5张

左边为高亮的图标。右边是灰化的。


附完整Shader

高亮

[csharp] view plain copy
  1. Shader "Unlit/Transparent Colored (Bright)"  

  2. {  

  3.     Properties  

  4.     {  

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

  6.         _Bright("Brightness", Float) = 2  

  7.     }  

  8.       

  9.     SubShader  

  10.     {  

  11.         LOD 100  

  12.   

  13.         Tags  

  14.         {  

  15.             "Queue" = "Transparent"  

  16.             "IgnoreProjector" = "True"  

  17.             "RenderType" = "Transparent"  

  18.         }  

  19.           

  20.         Cull Off  

  21.         Lighting Off  

  22.         ZWrite Off  

  23.         Fog { Mode Off }  

  24.         Offset -1, -1  

  25.         Blend SrcAlpha OneMinusSrcAlpha  

  26.   

  27.         Pass  

  28.         {  

  29.             CGPROGRAM  

  30.                 #pragma vertex vert  

  31.                 #pragma fragment frag  

  32.                  

  33.                 #include "UnityCG.cginc"  

  34.       

  35.                 struct appdata_t  

  36.                 {  

  37.                     float4 vertex : POSITION;  

  38.                     float2 texcoord : TEXCOORD0;  

  39.                     fixed4 color : COLOR;  

  40.                 };  

  41.       

  42.                 struct v2f  

  43.                 {  

  44.                     float4 vertex : SV_POSITION;  

  45.                     half2 texcoord : TEXCOORD0;  

  46.                     fixed4 color : COLOR;  

  47.                 };  

  48.       

  49.                 sampler2D _MainTex;  

  50.                 float4 _MainTex_ST;  

  51.                 float _Bright;  

  52.                   

  53.                 v2f vert (appdata_t v)  

  54.                 {  

  55.                     v2f o;  

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

  57.                     o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);  

  58.                     o.color = v.color;  

  59.                     return o;  

  60.                 }  

  61.                   

  62.                 fixed4 frag (v2f i) : COLOR  

  63.                 {  

  64.                     fixed4 col = tex2D(_MainTex, i.texcoord) * i.color;  

  65.                     col.rgb = _Bright * col.rgb;  

  66.                     return col;  

  67.                 }  

  68.             ENDCG  

  69.         }  

  70.     }  

  71.   

  72.     SubShader  

  73.     {  

  74.         LOD 100  

  75.   

  76.         Tags  

  77.         {  

  78.             "Queue" = "Transparent"  

  79.             "IgnoreProjector" = "True"  

  80.             "RenderType" = "Transparent"  

  81.         }  

  82.           

  83.         Pass  

  84.         {  

  85.             Cull Off  

  86.             Lighting Off  

  87.             ZWrite Off  

  88.             Fog { Mode Off }  

  89.             Offset -1, -1  

  90.             ColorMask RGB  

  91.             AlphaTest Greater .01  

  92.             Blend SrcAlpha OneMinusSrcAlpha  

  93.             ColorMaterial AmbientAndDiffuse  

  94.               

  95.             SetTexture [_MainTex]  

  96.             {  

  97.                 Combine Texture * Primary  

  98.             }  

  99.         }  

  100.     }  

  101. }  


灰化



[csharp] view plain copy
  1. Shader "Unlit/Transparent Colored (Gray)"  

  2. {  

  3.     Properties  

  4.     {  

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

  6.     }  

  7.       

  8.     SubShader  

  9.     {  

  10.         LOD 100  

  11.   

  12.         Tags  

  13.         {  

  14.             "Queue" = "Transparent"  

  15.             "IgnoreProjector" = "True"  

  16.             "RenderType" = "Transparent"  

  17.         }  

  18.           

  19.         Cull Off  

  20.         Lighting Off  

  21.         ZWrite Off  

  22.         Fog { Mode Off }  

  23.         Offset -1, -1  

  24.         Blend SrcAlpha OneMinusSrcAlpha  

  25.   

  26.         Pass  

  27.         {  

  28.             CGPROGRAM  

  29.                 #pragma vertex vert  

  30.                 #pragma fragment frag  

  31.                  

  32.                 #include "UnityCG.cginc"  

  33.       

  34.                 struct appdata_t  

  35.                 {  

  36.                     float4 vertex : POSITION;  

  37.                     float2 texcoord : TEXCOORD0;  

  38.                     fixed4 color : COLOR;  

  39.                 };  

  40.       

  41.                 struct v2f  

  42.                 {  

  43.                     float4 vertex : SV_POSITION;  

  44.                     half2 texcoord : TEXCOORD0;  

  45.                     fixed4 color : COLOR;  

  46.                 };  

  47.       

  48.                 sampler2D _MainTex;  

  49.                 float4 _MainTex_ST;  

  50.                   

  51.                 v2f vert (appdata_t v)  

  52.                 {  

  53.                     v2f o;  

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

  55.                     o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);  

  56.                     o.color = v.color;  

  57.                     return o;  

  58.                 }  

  59.                   

  60.                 fixed4 frag (v2f i) : COLOR  

  61.                 {  

  62.                     fixed4 col = tex2D(_MainTex, i.texcoord) * i.color;  

  63.                     col.rgb = dot(col.rgb, fixed3(.222,.707,.071));  

  64.                     return col;  

  65.                 }  

  66.             ENDCG  

  67.         }  

  68.     }  

  69.   

  70.     SubShader  

  71.     {  

  72.         LOD 100  

  73.   

  74.         Tags  

  75.         {  

  76.             "Queue" = "Transparent"  

  77.             "IgnoreProjector" = "True"  

  78.             "RenderType" = "Transparent"  

  79.         }  

  80.           

  81.         Pass  

  82.         {  

  83.             Cull Off  

  84.             Lighting Off  

  85.             ZWrite Off  

  86.             Fog { Mode Off }  

  87.             Offset -1, -1  

  88.             ColorMask RGB  

  89.             AlphaTest Greater .01  

  90.             Blend SrcAlpha OneMinusSrcAlpha  

  91.             ColorMaterial AmbientAndDiffuse  

  92.               

  93.             SetTexture [_MainTex]  

  94.             {  

  95.                 Combine Texture * Primary  

  96.             }  

  97.         }  

  98.     }  

  99. }  

评论列表暂无评论
发表评论