之前我升级部分 Built-in RP Shader 直接新建 shader,调整使用每一个 Shader 中对应的内容
都是基本上很少遇到有 redefinition of _Time
的 shader 编译错误问题
但是啊,我在对复杂一些的 Custom Shader 升级时,没使用批量 Replace,很容易漏掉 CGINCLUDE
, CGPROGRAM
的替换 HLSL
的方式
然后编译提示:redefinition of _Time
,然后就一脸懵了
去搜索还好发现有人遇到同样问题,但是都是问题集合里面的其中一条:
在引入URP的库后,CGPROGRAM一定要改成HLSLPROGRAM,否则会报类似下面的错误。原因是:CGPROGRAM默认引入了一些builtin的头文件(HLSLSupport.cginc和UnityShaderVariables.cginc),其中定义了_Time等变量,在使用URP框架后,与URP自己定义的产生重定义
所以我现在就单独写一个针对真个问题的解决方法博客,关键字也是单一,便于搜索:
CGINCLUDE
…ENDCG
->HLSLINCLUDE ... ENDHLSL
CGPROGRAM
…ENDCG
->HLSLPROGRAM ... ENDHLSL
- 从 Builtin 管线升级到 URP - 搜索 _Time 就可以快速定位