【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窗口中,我们看到的是这样的:
image
然而查阅unity的API手册,发现我们传入的参数必须在0f和1f之间,不能传0到255之间的数,特别注意这一点。

2.传入的参数必须是浮点型,不能是整形。

最终效果

image

参考资料

unityAPI-ColorConstructor

posted @ 2021-04-29 11:21  AshScops  阅读(908)  评论(0编辑  收藏  举报