随时间改变材料颜色的



是否有办法随时间改变材料的颜色?我想让我的2D游戏的背景从白色变成红色,以一种平滑的过渡。

在Unity 5中,你可以设置"反照率"颜色。这是我想要改变的属性。我可以这样做:

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

然而,为什么颜色会慢慢变化,而不是瞬间发生呢?

未测试,但可以这样做:

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;
    }
}

最新更新