在Unity 2019.2之前,我们无法在2D游戏中像3D游戏那样添加任何的光源,那个时候如果想要实现在2D游戏中添加光源的效果,那么就需要自己写非常复杂的Shader来实现。不过,在Unity 2019.2及以后的版本中,Unity官方引入了2D光源,我们只要在通用渲染管线(URP,Universal Render Pipeline)中使用官方提供的“2D Renderer”,这样就可以在2D游戏中添加官方提供的2D光源了,和在3D游戏中添加光源一样,2D光源也有不同的类型,而且还可以在2D游戏中产生阴影效果,这样一来就大大提升了我们2D游戏的画质。那么2D光照效果到底是如何产生的呢?其中的原理是什么?下面我们就来分析一波:
产生2D光照效果的原理其实很简单,就是一个颜色混合的效果,颜色混合的算法也很简单。具体来说,就是通过一定的操作将2D光照的颜色和被照亮的精灵(Sprite)的颜色混合在一起形成一个新的颜色,然后将这个颜色赋给精灵(Sprite)被照亮部分的对应像素点,作为这个像素点新的颜色呈现出来,这就是产生2D光照效果的原理。我们可以将这个原理总结成下面的公式,就是计算精灵(Sprite)被照亮的像素点混合颜色值(具体来说就是颜色的RGB通道的值)的公式:
(1)精灵(Sprite)被照亮的像素点混合颜色的R通道的值 = 精灵(Sprite)被照亮的像素点原本颜色的R通道的值