UnityShader常见报错汇总
UnityShader常见报错汇总
UnityShader报错提示,大部分根据提示就能找到问题,但是有时候提示不太科学,根据提示找疯都找不到,主要是以下原因:
- 提示位置不对,比如A行出错,提示位置不在A行。
- 提示的位置就是错误的,但是你就看不出来那里有错,于是就把这行当成没有错误,去找其它地方有没有错......
语法可能出现错误的地方
-
行尾';'
- 行尾不允许出现';'
- Properties里面定义的变量语句末尾出现了';'
_Color ("Color Tint", Color) = (1, 1, 1, 1)
- Unity内置的指令(主要是一些模式的开启命令)后不允许出现';'
Cull Off ZWrite Off Blend SrcAlpha OneMinusSrcAlpha
- CG代码中的
#include
及#pragma
后不需要';' - CG代码段里面结构体定义尾部必须有';'
struct a2v { float4 vertex: POSITION; };
- 将V3赋值给V4
cannot implicitly convert from 'float3' to 'float4'
- 行尾不允许出现';'
-
将有返回值的函数作为参数使用(这个按理应该支持的,但是目前就是不支持,这样做Shader会提示报错,但是shader仍然能够正常运行)
fixed temp = tempFun(param1,tempFunWithReturnValue(),param2,...);
-
成对出现元素
- {}
- 宏判断需要有始有终
#ifdef XXXXX #endif
变量/函数名称不一致
- 当名称需要修改时,要将所有涉及的地方一并修改