如何解决Screen Space Overlay画布遮挡World Space画布UI按钮交互问题?
保留像素化效果同时修复按钮交互问题
针对现有方案的修复步骤
- 给World Space画布下的所有按钮单独创建并分配一个专属层(比如命名为
WorldUI) - 选中场景里的
EventSystem对象,找到Standalone Input Module组件,修改Raycast Mask选项,只勾选WorldUI和其他需要交互的层(不要勾选像素化Raw Image所在的层) - 再次确认:像素化Raw Image的
Raycast Target已关闭,且其所在的Screen Space Overlay画布已经移除Graphic Raycaster组件(如果没移除,即使关闭了Raycast Target,画布的射线检测逻辑仍可能干扰) - 排查画布子物体:如果Screen Space Overlay画布还有其他子UI元素,确保它们的
Raycast Target也全部关闭
更优的像素化实现方案
用URP后处理替代Raw Image覆盖的方式,完全避免UI遮挡问题,性能也更高效:
- 打开
Project Settings > Graphics,找到你的URP Asset,勾选Post Processing启用后处理功能 - 给主相机添加
Volume组件,点击New创建一个全局的Volume Profile - 在Profile的添加效果菜单中找到
Pixelation并添加,通过调整Pixel Size参数控制像素化程度(比如要模拟480x270分辨率,用当前屏幕高度除以270即可得到对应值,1080P屏幕就是1080/270=4) - 这种方式直接对相机渲染画面做像素化处理,不需要额外的画布和Raw Image,完全不会干扰任何UI交互
另外,如果你想继续使用渲染纹理方案,也可以调整相机层级:
- 主相机负责渲染3D场景到480x270的渲染纹理,关闭其UI渲染(Culling Mask排除UI层)
- 创建第二个相机,设置其渲染层级高于主相机,Culling Mask只勾选UI层,目标纹理设为None,专门渲染World Space的UI,这样UI会直接显示在像素化画面之上,且能正常交互
内容的提问来源于stack exchange,提问作者Pietu
相关产品推荐
相关产品推荐

