更新于 

2D Lighting

Unity版本:2021

安装URP包

使用Package Manager安装Universal RP包

安装好之后就能在Assets文件夹中创建URP渲染管线,
Create/Rendering/URP Asset(with 2d renderer)
新建后还会自动创建一个renderer 2d data文件,
用来放在URP Asset的Renderer List里的。

将Project Settings/Graphics/Scriptable Renderer Pipeline Settings设置为刚才创建的URP Asset文件

切换渲染模式

将渲染管线修改成URP Asset之后,
还需要将Sprite的材质修改为Sprite-Lit-Default
这样Sprite才能受到光照的影响。

通过Window/Rendering/Render Pipeline Converter对现有场景中的Sprite进行材质替换,
选择Convert Built-in to 2D(URP),
勾选 Material and Material Reference Upgrade 进行更新

这样所有Sprite的材质都被替换为Sprite-Lit-Default

Sprite没有变暗问题

按理来说Sprite的Material修改为Sprite-Lit-Default后,
就会受光照影响,如果没有Light的话,会变为全黑,
但是如果场景中Sprite没有变黑,
是因为没有加任何Light实例,
只有存在至少一个全局光照GlobalLight时,光照才能有效。

参考视频

另外,在Hierarchy直接通过菜单创建的Light有时会自带一个Light配置脚本(导致不起作用),
需要额外添加Light 2D脚本才起作用,不知道是什么原因。

Light

完成URP的配置后,就能在Hierarchy中创建2D Light,
Unity提供很多种类的光源:

  • Point Light 点光源
  • Spot Light 聚光灯
    • 可以调整角度
  • Global 全局光照
  • Sprite 贴图光照
    • 能够根据提供的光照贴图添加光
  • Freeform 自定义形状光
    • 可以自定义光的形状,很好用!

这些光源都是可以调整影响图层的(Target Sorting Layers)

Normal Texture

Sprite还支持法线贴图

法线贴图通过光照能为2d物体带来3d效果: