文章

Unity Mask遮罩失效问题

Unity Mask遮罩失效问题

实际效果

image

期望效果

image

环境设置

  • Canvas设置image

​​

  • Camera设置image

在当前情况下就会出现MASK失效的问题

在把相机设置成Screen Space - Overlay或者设置清除深度 如下图即可解决

image

我是设置了清除深度缓存,让其显示效果正常

相机渲染模式的区别

  • 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 进行授权