【unity2D】Light2D-学习记录1-代码控制光照的明暗渐变
目标
很多2D游戏里都有光照随时间渐变的设定,今天希望实现类似功能,用代码控制光照的明暗渐变。
前言
我使用的是URP集成下的Light2D,具体如何设置参考视频教程。视频教程里没有代码部分的教学,故在此总结如何用代码控制。
代码相关
在看完视频教程并设置好相关参数后,开始写代码。
在引用命名空间时,网上的某些教程说要用这个:
using UnityEngine.Experimental.Rendering.LWRP;
但它已经过时了
要用更新后的:
using UnityEngine.Experimental.Rendering.Universal;
上代码:
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;
}
}
}
最终效果
总结
1.引用命名空间时,用的是using UnityEngine.Experimental.Rendering.Universal;
别用已过时的那个。
2.用线性插值和timer实现渐变,方便而简洁;如果不懂线性插值,那就正常设变量、变换、赋值,也能实现。