Я пытаюсь перекрасить заливку ползунка Unity, чтобы она показывала подгруппы, из которых рабочая сила состоит из разных цветов. К сожалению, соотношения не отображаются правильно, или цвет не меняется.
При использовании постоянных значений отношения часто бывают неправильными, при попытке использовать мой массив с плавающей точкой цвета часто даже не меняются.
uint _SegmentsSize = 0;
float _Segments[1000];
uint current = 0;
fixed4 frag(v2f IN) : SV_Target
{
current = 0;
for (int i = 0; i < _SegmentsSize; i++)
{
if (IN.texcoord.x > _Segments[i]) {
current = i+1;
}
}
fixed4 co = fixed4((current) % 3 == 0 ? 1 : 0, (current + 1) % 3 == 0 ? 1 : 0, (current + 2) % 3 == 0 ? 1 : 0, 1);
half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color* co;
#ifdef UNITY_UI_CLIP_RECT
color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
#endif
#ifdef UNITY_UI_ALPHACLIP
clip(color.a - 0.001);
#endif
return color;
}
на стороне C # (мат - материал)
mat.SetInt("current", segments.Length);
mat.SetFloatArray("_Segments", segments);