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赋值给V4cannot implicitly convert from 'float3' to 'float4'
  • 将有返回值的函数作为参数使用(这个按理应该支持的,但是目前就是不支持,这样做Shader会提示报错,但是shader仍然能够正常运行)

      fixed temp = tempFun(param1,tempFunWithReturnValue(),param2,...);
  • 成对出现元素
    • {}
    • 宏判断需要有始有终
          #ifdef XXXXX
    
          #endif

    变量/函数名称不一致

  • 当名称需要修改时,要将所有涉及的地方一并修改

转载于:https://www.cnblogs.com/NZQLA/p/10857798.html

THE END
< <上一篇
下一篇>>