随时间改变材料的颜色

时间:2015-08-25 18:52:05

标签: unity3d colors material

有没有办法随时间改变材料的颜色?我希望我的2D游戏的背景在一个漂亮的平滑过渡中从白色变为红色。

在Unity 5中,您可以设置“Albedo”颜色。这是我想要改变的属性。我可以通过使用这个来做到这一点:

back.SetColor("_Color", new Color(255, 0, 0, 0.5f));

然而,颜色如何缓慢变化而不是如此瞬间?

1 个答案:

答案 0 :(得分:0)

未经测试,但请尝试这种方式:

var threshold = 0.001f;
var speed = 5.0f;

function Start()
{
    // Execution
    StartCoroutine("ChangeToColor", new Color(1.0f, 0f, 0f));
}

IEnumerator ChangeToColor(Color newColor)
{
    var getColor = back.GetColor("_Color");
    while(((Vector4)getColor - (Vector4)newColor).magnitude < threshold)
    {
        back.SetColor("_Color", Vector4.Lerp(getColor, newColor, Time.deltaTime * speed));
        yield return null;
    }
}