颜色渐变如何工作?

问题描述 投票:0回答:1

我正在尝试在我的代码中实现下图,但它不起作用。它只在所有面上显示红色。我正在使用线条渲染器和颜色渐变。

enter image description here

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

    DrawLine();
}




private void DrawLine()
{
    GameObject myLine = new GameObject();
    myLine.transform.position = start;
    myLine.AddComponent<LineRenderer>();
    lr = myLine.GetComponent<LineRenderer>();
    lr.material = new Material(Shader.Find("Sprites/Default"));     
    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.loop = true;


    Gradient gradient = new Gradient();
    gradient.SetKeys(
        new GradientColorKey[]
        {
            new GradientColorKey(Color.red, 0.25f),
            new GradientColorKey(Color.blue, 0.25f),
            new GradientColorKey(Color.green, 0.25f),
            new GradientColorKey(Color.yellow, 0.25f)
        },
            new GradientAlphaKey[] { new GradientAlphaKey(1.0f, 0.0f) }
        );
    lr.colorGradient = gradient;

}
c# unity3d
1个回答
1
投票

GradientColorKey的第二个参数是[0,1]之间的指数,

所以你可以修改GradientColorKey数组,如:

new GradientColorKey[]
    {
        new GradientColorKey(Color.red, 0.00f),
        new GradientColorKey(Color.red, 0.24f),
        new GradientColorKey(Color.blue, 0.25f),
        new GradientColorKey(Color.blue, 0.49f),
        new GradientColorKey(Color.green, 0.50f),
        new GradientColorKey(Color.green, 0.74f),
        new GradientColorKey(Color.yellow, 0.75f),
        new GradientColorKey(Color.yellow, 1.00f)
    }
© www.soinside.com 2019 - 2024. All rights reserved.