Unity技术之Unity中的阴影疑难解答

2015年03月16日 13:46 0 点赞 0 评论 更新于 2025-11-21 17:19

本页列出了常见阴影问题的解决方案,以下将针对不同的阴影问题进行详细分析并给出解决办法。

完全没看到阴影!

版本因素

阴影是Unity专业版的独有功能,非Unity专业版默认不带阴影。不过,仍可使用一些简单的阴影方法,例如使用投影仪(Projector)来模拟阴影效果。

硬件支持

阴影效果的实现需要一定的图形硬件支持。若要了解详细的硬件要求信息,请参阅阴影页面

设置检查

检查阴影是否在质量设置(Quality Settings)中被完全禁用。若该选项被禁用,场景中将不会显示阴影。

某些对象不投射或接收阴影

对象渲染器属性

渲染器(Renderer)自身具有两个重要的阴影属性,分别是接收阴影(Receive Shadows)和投射阴影(Cast Shadows),这两项属性默认均为开启状态。若发现某些对象不投射或接收阴影,可检查这两个属性是否被意外关闭。

着色器类型

  • 不透明对象:只有不透明的对象才能投射和接收阴影。如果使用内置的透明(Transparent)或粒子(Particle)着色器,对象将不会产生阴影。在大部分情况下,对于栅栏、植物等对象,使用透明抠图(Transparent Cutout)着色器是可行的,它可以让对象在保持一定透明效果的同时投射和接收阴影。
  • 自定义着色器:如果使用自定义编写的着色器(Shaders),则必须满足像素光照条件,并使用几何渲染队列(Geometry render queue)。使用顶点光照(VertexLit)着色器的对象无法接收阴影,但可以投射阴影。

渲染路径

在正向渲染路径(Forward rendering path)中,只有最亮的方向灯可投射阴影。如果想要场景中有多个灯光投射阴影,必须使用延迟光照(Deferred Lighting)渲染路径。

作者信息

menghao

menghao

共发布了 3994 篇文章