2015-09-21 76 views
0

首先,我对于着色器编程没有任何意见,但是我需要它用于我的游戏,所以我在互联网上找到了剪辑区域着色器,然后尝试修改它并添加一些功能去吧!我向我的精灵添加了着色器,并在我的PC和一些Android设备上检查了它,但是之后我在HTC One(我的朋友移动设备)上检查过它,但奇怪的问题正在发生!Unity3D中的剪辑区域着色器

enter image description here

正如你所看到的左侧没有限视觉。

我发现的第一个着色器只有剪裁精灵的宽度和长度,然后我从左侧和右侧的宽度加上宽度,并将颜色着色添加到着色器。

有一个代码:

Shader "Sprites/ClipAreaWithAlpha" 
{ 
    Properties 
    { 
     _Color ("Color Tint", Color) = (1,1,1,1) 
     _MainTex ("Base (RGB), Alpha (A)", 2D) = "white" {} 
     _Length ("Length", Range(0.0, 1.0)) = 1.0 
     _WidthR("Width from right", Range(0.0, 1.0)) = 1.0 
     _WidthL ("Width from left", Range(0.0, 1.0)) = 0.0 
    } 

    SubShader 
    { 
     LOD 200 

     Tags 
     { 
      "Queue" = "Transparent" 
      "IgnoreProjector" = "True" 
      "RenderType" = "Transparent" 
     } 

     Pass 
     { 
      Cull Off 
      Lighting Off 
      ZWrite Off 
      Offset -1, -1 
      Fog { Mode Off } 
      ColorMask RGB 
      Blend SrcAlpha OneMinusSrcAlpha 

      CGPROGRAM 
      #pragma vertex vert 
      #pragma fragment frag 

      #include "UnityCG.cginc" 

      sampler2D _MainTex; 
      float4 _MainTex_ST; 
      float _Length; 
      float _WidthR; 
      float _WidthL; 
      half4 _Color; 

      struct appdata_t 
      { 
       float4 vertex : POSITION; 
       float2 texcoord : TEXCOORD0; 
      }; 

      struct v2f 
      { 
       float4 vertex : POSITION; 
       float2 texcoord : TEXCOORD0; 
       half4 color : COLOR; 
      }; 

      v2f vert (appdata_t v) 
      { 
       v2f o; 
       o.vertex = mul(UNITY_MATRIX_MVP, v.vertex); 
       o.texcoord = v.texcoord; 
       o.color = _Color; 
       return o; 
      } 

      half4 frag (v2f IN) : COLOR 
      { 
       if ((IN.texcoord.x<_WidthL) || (IN.texcoord.x>_WidthR) || (IN.texcoord.y<0) || (IN.texcoord.y>_Length)) 
       { 
        half4 colorTransparent = half4(0,0,0,0) ; 
        return colorTransparent; 
       } 
       else 
       { 
        half4 tex = tex2D(_MainTex, IN.texcoord); 
        tex.a = IN.color.a; 
        return tex; 
       } 
      } 
      ENDCG 
     } 
    } 
} 

正如我以前说过这个着色器是对我查了,但是,HTC之一,它不能很好地和正确地工作在其他Android设备确定。我不知道问题出在哪里!我很感谢解决方案。

而这种着色器这样的警告:MaterialPropertyBlock is used to modify these values

+0

我还没有找到解决方案。 – ATHellboy

+0

尝试删除“ColorMask RGB” –

回答

0

我有同样的问题。尝试将Generate Mip Maps的值设置为off,然后着色器正常工作。