Unity Mask遮罩失效问题
Unity Mask遮罩失效问题
实际效果
期望效果
环境设置
在当前情况下就会出现MASK失效的问题
在把相机设置成Screen Space - Overlay或者设置清除深度 如下图即可解决
我是设置了清除深度缓存,让其显示效果正常
相机渲染模式的区别
Screen Space - Overlay
UI直接渲染在屏幕上,不依赖相机//
不受3D场景影响//
- 性能较好//
- 遮罩效果稳定
- 不需要深度测试
Screen Space - Camera
UI渲染在指定相机前方的平面上
受相机设置影响(FOV、深度等)
- 可以与3D场景交互
- 遮罩效果可能受相机设置影响
- 需要正确的深度缓冲区管理
Clear Depth 的作用原理
1
2
3
4
5
6
7
8
9
问题场景:
- UI相机和游戏相机共享深度缓冲区
- 游戏相机已经渲染了3D场景,设置了深度值
- UI相机渲染时,深度测试可能失败
- 导致UI元素(包括遮罩)不显示或显示异常
渲染流程:
1. 游戏相机渲染3D场景 → 设置深度缓冲区
2. UI相机渲染UI → 需要清除之前的深度值
3. 如果不清除深度,UI可能被深度测试过滤掉
本文由作者按照 CC BY 4.0 进行授权