当半透明物体需要投射阴影时,这个问题就需要更细致地处理了。
半透明材质是设置zwrite mode为off ztest mode是always
半透明材质的标准设置
对于半透明材质,你问的 ZWrite Off 和 ZTest Always 是常见的选择,但需要留意:
-
ZWrite Off (关闭深度写入):这是半透明渲染的"标准操作"。因为半透明物体需要和它后面的物体混合颜色,如果它写入深度值,就会错误地挡住后面的物体,导致渲染顺序错乱。
-
ZTest Always (总是通过深度测试) :这会让物体的每个像素都绘制出来,无视它和已有物体的前后遮挡关系,常用于制作透视或X光特效 ,而不是通用的半透明效果。更通用的做法是保持默认的
ZTest LEqual,让物体只在前方无遮挡时正常显示,这样更符合现实直觉。
所以,对于常规的半透明材质,推荐的深度设置是:
如果你发现关掉之后物体仍然有奇怪的阴影痕迹,那很可能是 "Receive Shadows"(接收阴影)还开着,导致它接收了来自地面或其他物体的阴影。你可以把"Receive Shadows"也一并取消勾选,这样从视觉上它就完全"脱离"阴影系统了。
这个物体是在地面上,还是飘在空中的UI或者特效呢?如果是在地面上,关闭接收阴影后能让它看起来更"通透"。

(示意图:在Mesh Renderer组件中将Cast Shadows设为Off)
这样一来,这个物体就完全不会产生任何阴影了,其他设置完全不用动。
🎨 方法二:在ASE材质中关闭(如果你需要在多处复用)
如果你希望这个材质在任何物体上默认都不投射阴影,可以在ASE材质内部处理。
在ASE的主节点(Master Node / 输出节点)上,找到 "Cast Shadows" (投射阴影)这个选项(通常是一个勾选框),取消勾选即可。

(示意图:在ASE主节点中取消Cast Shadows勾选)
这样,任何使用这个材质的物体,都会默认不投射阴影。
-
ZWrite Mode :
Off(关闭) -
ZTest Mode :
LEqual(小于等于) -
透明材质能否投射阴影,关键在于阴影的生成和颜色渲染是两个独立的Pass(渲染过程)。阴影是在一个专门的阴影投射Pass中生成的,这个Pass默认和物体的主渲染Pass是分开的。
因此,解决半透明材质投射阴影的核心思路就是:在阴影投射Pass中,告诉Unity应该如何处理透明度。
在ASE中,主要有两种方法可以实现:
-
方法一:使用"Masked"混合模式
在ASE的主节点(Master Node)中,将 Blend Mode 设置为 "Masked" 或 "Transparent Cutout" 。这会启用一个叫
Alpha Clip Threshold的参数,你可以通过调整它,来控制哪些透明度区域能产生阴影。这种方式产生的是硬边缘的阴影,非常适用于像镂空铁网、植被叶片这类有明确透明和不透明区域的物体。 -
方法二:手动处理阴影Pass
如果你想实现更"真实"的半透明阴影(阴影本身也有半透明的感觉),就需要在ASE的 "Extra Options" 或类似高级面板中,手动添加或修改阴影投射Pass的代码,让阴影也支持透明度混合。但这通常比较复杂,且在不同渲染管线(如URP)下的实现方式差异很大。
不让他有阴影的办法
方法一:直接在物体上关闭(最推荐,立竿见影)
这是最快、最干净的方法,不需要改动材质球。
-
在场景或层级(Hierarchy)视图中,选中你的半透明物体。
-
在它的Mesh Renderer (网格渲染器)组件中,找到 "Lighting"(光照)部分。
-
将 "Cast Shadows" (投射阴影)的属性,从默认的
On改为Off。