是否有办法随时间改变材料的颜色?我想让我的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;
}
}