自定义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
相关产品推荐
相关产品推荐

