基于Alan Zucconi的书,滚动纹理着色器出错

时间:2017-01-29 12:34:52

标签: unity3d unity5 fragment-shader

使用unity 5.5和Alan Zucconi的书我得到“数字类型构造函数的参数数量不正确”

添加了着色器源,推荐:

    Shader "book/scroller"
    {
    Properties
    {
    _MainTex ("Texture", 2D) = "white" {}
    _ScrollXSpeed ("x scroll speed", Range(0,10)) = 2
    _ScrollYSpeed("Y scroll speed", Range(0,10)) = 2
}
SubShader
{
    Tags { "RenderType"="Opaque" }
    LOD 100

    Pass
    {
        CGPROGRAM
        #pragma vertex vert
        #pragma fragment frag


        #include "UnityCG.cginc"

        struct appdata
        {
            float4 vertex : POSITION;
            float2 uv : TEXCOORD0;
        };

        struct v2f
        {
            float2 uv : TEXCOORD0;
            UNITY_FOG_COORDS(1)
            float4 vertex : SV_POSITION;
        };

        sampler2D _MainTex;
        float4 _MainTex_ST;
        fixed _ScrollXSpeed;
        fixed _ScrollYSpeed;

        v2f vert (appdata v)
        {
            v2f o;
            o.vertex = UnityObjectToClipPos(v.vertex);
            o.uv = TRANSFORM_TEX(v.uv, _MainTex);
            UNITY_TRANSFER_FOG(o,o.vertex);
            return o;
        }

        fixed4 frag (v2f i) : SV_Target
        {

            fixed2 scrolledUV = i.uv;
            fixed2 xScrolledValue = _ScrollXSpeed * _Time;
            fixed2 yScrolledValue = _ScrollYSpeed * _Time;
            scrolledUV += fixed2 (xScrolledValue, yScrolledValue);
            fixed4 col = tex2D(_MainTex, scrolledUV);
            return col;
        }
        ENDCG
    }
}

}

错误显示在以下行:

scrolledUV += fixed2 (xSCrolledValue, ySCrolledValue);

它出了什么问题?

1 个答案:

答案 0 :(得分:0)

错误原因: 你正在创建fixed2-variable并给它两个fixed2值作为参数,应该是浮点数。

以下是已修复版本:

fixed xScrolledValue = _ScrollXSpeed * _Time;
fixed yScrolledValue = _ScrollYSpeed * _Time;
scrolledUV += fixed2 (xScrolledValue, yScrolledValue);