You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义Unity Shader报错:Unexpected token 'uv' 寻求解决方案

解决Shader编译错误:Unexpected token 'uv'

错误根源是代码里的两处语法错误:在appdata和v2f结构体中,vertex成员声明的结尾误用了冒号(:),正确应该是分号(;)。编译器无法识别错误符号后的uv字段,因此抛出“Unexpected token 'uv'”。

错误行:

  • appdata结构体中:float4 vertex : POSITION:
  • v2f结构体中:float4 vertex : SV_POSITION:

修正后的完整Shader代码:

Shader "Minecraft/Blocks"
{
Properties
{
_MainTex("Block Texture Atlas", 2D) = "white" {}
}

SubShader
{
    Tags{"Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="TransparentCutout"}
    LOD 100
    Lighting Off

    Pass
    {
        CGPROGRAM
            #pragma vertex vertFunction
            #pragma fragment fragFunction
            #pragma target 2.0

            #include "UnityCG.cginc"

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

            struct v2f
            {
                float4 vertex : SV_POSITION;
                float2 uv : TEXCOORD0;
                float4 color : COLOR;
            };

            sampler2D _MainTex;

            float GlobalLightLevel;

            v2f vertFunction(appdata v)
            {
                v2f o;

                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = v.uv;
                o.color = v.color;

                return o;
            }

            fixed4 fragFunction(v2f i) : SV_Target
            {
                fixed4 col = tex2D(_MainTex, i.uv);
                float localLightLevel = clamp(GlobalLightLevel + i.color.a,0,1);
                clip(col.a - 1);
                col = lerp(col, float4(0,0,0,1), localLightLevel);

                return col;
            }

        ENDCG
    }
}
}

内容的提问来源于stack exchange,提问作者duckquy puf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:15:43