GLSLPROGRAM后面加#pragma multi_compile语句
Pass
{
GLSLPROGRAM
#include "UnityCG.glslinc"
#pragma multi_compile _mapbox HAS_UNIFORM_u_color
}
然后
顶点和片元着色器中
#ifndef HAS_UNIFORM_u_color
AAAAAA
#else
bbbbbb
#endif
脚本中开启和关闭HAS_UNIFORM_u_color
material.EnableKeyword("HAS_UNIFORM_u_color")
这里声明变体的时候是
#pragma multi_compile _mapbox
HAS_UNIFORM_u_color
前面还加了个_mapbox
是干啥的,因为unity声明变体的时候默认第一个是开启的,如果#pragma multi_compile HAS_UNIFORM_u_color
的话,那么 HAS_UNIFORM_u_color
就一直是打开的,脚本中也无法改变,前面放个_mapbox
用于占个位置,个人理解,有误请留言纠正。