【unity2D】Light2D-学习记录2-代码控制光照的颜色渐变
目标
如果只改变Light2D的明暗,用light2D.intensity确实会很方便,但如果要改变Light2D的颜色,就需要调整它的Color。在此记录下调整Color时需要注意的细节。
思路
调整Color时,使用Color的线性插值+timer实现。
代码相关
using UnityEngine;
using UnityEngine.Experimental.Rendering.Universal;
public class GlobalLightTest : MonoBehaviour
{
private Light2D light2D;
private float timer = 0;
void Start()
{
light2D = GetComponent<Light2D>();
}
void Update()
{
Timer(1f);
light2D.color = Color.Lerp(Color.white ,new Color(90f/255 , 60f/255 , 0f/255) , timer);//这里特别注意细节
}
private void Timer(float _seconds)//传入变化时间
{
float _multiple = 1 / _seconds;
if(Input.GetKey(KeyCode.L) && timer <= 1)
{
timer += Time.deltaTime * _multiple;
}
else if(timer >= 0)
{
timer -= Time.deltaTime * _multiple;
}
}
}
注意事项
1.unity中的Color的构造函数是:
public Color (float r, float g, float b, float a);
这意味着我们要传入对应红、绿、蓝、透明度的参数进去。
在Inspector窗口中,我们看到的是这样的:
然而查阅unity的API手册,发现我们传入的参数必须在0f和1f之间,不能传0到255之间的数,特别注意这一点。
2.传入的参数必须是浮点型,不能是整形。