在 Unity 中制作手电筒光投效果,需要利用 Unity 中的 Cookie 纹理类型,对于这种类型,可以将其理解为图案灯贴图并投射形状或颜色的斑驳阴影,从而改变灯光的外观和强度。

其实这种图案灯贴图本质上就是一种黑白纹理,可以将其添加到光源中,有效地模拟复杂的光照效果,并且对运行时性能几乎没有影响。但 Unity 的 Cookie 还有点不一样,因为它可以模拟包括不限于焦散、水光反射、柔和阴影和灯光形状等外观。
如果你用过其他三维软件,例如 Blender、3dmax 等,他们也都有这种类型的模拟,只是叫法不同,而方法是一样的,那么本例事实上也是通过这些类型的形状和强度来模拟的。
为光源添加Cookie
这里我使用了下面这张黑白纹理来模拟手电筒投射光,当然你也可以选择其他类型的贴图,花里胡哨也不是不行。

第一步
选择 cookie 纹理并确保相应地设置纹理类型,还需要将 Alpha 源设置为从灰度来识别,因为我使用的是黑白图像。
最后,勾选 Alpha is Transparency( Alpha透明)选项,这使编辑器能够识别图像中的透明度,而不仅仅是像常规纹理显示那样投影一个带有黑色空间的正方形。

第二步
选择一个光源来应用 Cookie 纹理,可以使用聚光灯来模拟,通常这种类型的灯光是较好的选项。

第三步
选择光源后,将 cookie 纹理拖到 Inspector 中的 cookie 部分。

添加后可能会收到一条警告消息。
HDRP does not support the Cookie Texture type, only Default is supported.
只需单击修复,它就会自动调整你刚才设置的纹理。

最终结果
到这里就可以在场景中测试一下聚光灯所投射出来的形状以及强度,该光照效果就有点像现实生活中手电筒照射出来光的意思了。
