【unity2D】Light2D-学习记录1-代码控制光照的明暗渐变

目标

很多2D游戏里都有光照随时间渐变的设定,今天希望实现类似功能,用代码控制光照的明暗渐变

前言

我使用的是URP集成下的Light2D,具体如何设置参考视频教程。视频教程里没有代码部分的教学,故在此总结如何用代码控制。

代码相关

在看完视频教程并设置好相关参数后,开始写代码。

在引用命名空间时,网上的某些教程说要用这个:

using UnityEngine.Experimental.Rendering.LWRP;

但它已经过时了
image

要用更新后的:

using UnityEngine.Experimental.Rendering.Universal;

image

上代码:

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()
	{
		LightTimer();

		light2D.intensity = Mathf.Lerp(0,1,timer);
		//这里我们用线性插值和timer实现渐变
		//如果要控制在指定时间内变换,在Time.deltatime上乘“1/指定时间”即可
	}

	private void LightTimer()
	{
		if(Input.GetKey(KeyCode.L) && timer <= 1)//按住L渐亮
		{
			timer += Time.deltaTime;
		}
		else if(timer >= 0)//松开L渐暗
		{
			timer -= Time.deltaTime;
		}
	}
}

最终效果

image

总结

1.引用命名空间时,用的是using UnityEngine.Experimental.Rendering.Universal;
别用已过时的那个。
2.用线性插值和timer实现渐变,方便而简洁;如果不懂线性插值,那就正常设变量、变换、赋值,也能实现。

参考资料

Unity2019.3最新Universal RP通用渲染管线使用指南

posted @ 2021-04-27 11:10  AshScops  阅读(1539)  评论(0编辑  收藏  举报