Unity3d 声明Unity着色器数组的正确方法

Unity3d 声明Unity着色器数组的正确方法,unity3d,shader,Unity3d,Shader,希望有一个简单的问题。这是一个简单的摄影机效果着色器。这很有效。但是,将_ColorSet01数组放在frag函数中意味着数组将针对每个像素进行初始化?我错了吗?。相信我已经把它移到了函数的外面,就在MainTex定义的正下方。通过这样做,数组中的每个项都会丢失它们的值,当在函数中查询时,它们会变成float4(0,0,0,0) 我显然用错误的方法处理这个数组。任何帮助都将不胜感激 顺便说一句,这是Unity 2018.3.10,如果有帮助的话 sampler2D\u MainTex; 浮动4

希望有一个简单的问题。这是一个简单的摄影机效果着色器。这很有效。但是,将_ColorSet01数组放在frag函数中意味着数组将针对每个像素进行初始化?我错了吗?。相信我已经把它移到了函数的外面,就在MainTex定义的正下方。通过这样做,数组中的每个项都会丢失它们的值,当在函数中查询时,它们会变成float4(0,0,0,0)

我显然用错误的方法处理这个数组。任何帮助都将不胜感激

顺便说一句,这是Unity 2018.3.10,如果有帮助的话

sampler2D\u MainTex;
浮动4帧(v2f\u img输入):颜色{
float4 base=tex2D(_MainTex,input.uv);
float4_ColorSet01[6]=
{
浮动4(1,0,0,1),
浮动4(1,1,0,1),
浮动4(1,0,0,1),
浮动4(1,0,1,1),
浮动4(1,1,0,1),
浮动4(1,0,0,1)
};
如果(基数a>0)
{
base.rgb=_ColorSet01[1].rgb;
}
返回基地;

}
非常抱歉…在发布问题后5分钟就找到了答案。这是在函数外部声明数组并保留值的方法:

static const float4\u ColorSet01[6]={
浮动4(1,0,0,1),
浮动4(1,1,0,1),
浮动4(1,0,0,1),
浮动4(1,0,1,1),
浮动4(1,1,0,1),
浮动4(1,0,0,1)
};