更改线性渲染器中每个元素的颜色不起作用

时间:2019-03-18 02:37:13

标签: c# unity3d

我想为每行(元素)更改颜色,就像在颜色切换中一样。但是我的代码无法正常工作。我的代码有什么问题?

void Start()
{
    lineGeneratorPrefab = new GameObject();
    DrawLine();
}


private void DrawLine()
{
    GameObject myLine = new GameObject();
    myLine.transform.position = start;
    myLine.AddComponent<LineRenderer>();
    LineRenderer lr = myLine.GetComponent<LineRenderer>();

    lr.positionCount = 4;

    lr.SetPosition(0, new Vector3(-2, 0, 0));
    lr.SetPosition(1, new Vector3(2, 0, 0));
    lr.SetPosition(2, new Vector3(2, -2, 0));
    lr.SetPosition(3, new Vector3(-2, -2, 0));
    lr.materials[2].color = Color.blue;
    lr.materials[3].color = Color.red;
}

1 个答案:

答案 0 :(得分:0)

看看here

您可以通过colorGradient属性来更改线条渲染器的渐变,而不是改变各种材质。

因此,您可以添加以下内容:

 gradient.SetKeys(
    new GradientColorKey[] { 
            new GradientColorKey(Color.red,0.0f), 
            new GradientColorKey(Color.red, 0.25f),
            new GradientColorKey(Color.blue, 0.5f),
            new GradientColorKey(Color.blue, 1.0f)},
            // Alpha key
        );

如果要进行更突然的过渡,可以在例如0.49和0.51处添加颜色键。