【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();
}

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  阅读(1766)  评论(0)    收藏  举报