Unity UI中Pos Z更靠前的文本被按钮遮挡的原因及解决方法
问题诱因
UGUI的渲染排序规则和常规3D物体Z轴排序逻辑完全不同,导致该问题的核心原因如下:
- 只有当Canvas渲染模式设置为世界空间(World Space) 时,Rect Transform的
Pos Z才会直接影响UI层级。绝大多数场景下UI用的都是屏幕空间-叠加(Screen Space - Overlay) 或者屏幕空间-相机(Screen Space - Camera) 模式,这两种模式下Pos Z对同Canvas内的元素排序几乎没有影响。 - 上述两种常用模式下,同Canvas内UI元素的渲染优先级由
Hierarchy面板的层级顺序决定:同一父物体下,排列越靠后的元素渲染越晚,显示层级越高。你当前的文本元素大概率在Hierarchy中的排列位置比按钮更靠前,所以按钮会后渲染覆盖文本。 - 如果元素绑定了独立Canvas、Sorting Group组件,还会优先按
Sorting Layer、Order in Layer的数值判断层级,这两个参数的优先级远高于Z轴坐标。

可行解决方案
根据你的项目场景可以任选以下方案解决:
- 调整Hierarchy层级:直接将文本元素拖到按钮元素的下方,同一父物体下靠下的UI会自动显示在上层,无需修改其他参数,是最简单的解决方案。
- 调整排序参数:给文本添加独立Canvas组件,勾选
Override Sorting选项,设置它的Order in Layer数值高于按钮所在的Canvas数值即可。 - 启用Z轴排序逻辑:如果确实需要用Z轴控制UI层级,将根Canvas的渲染模式修改为世界空间(World Space),此时Z值越小的元素距离相机越近,就会符合你最初的层级预期,不过该模式下需要额外调整UI适配、射线检测逻辑。
- 用Canvas Group调整:给按钮添加
Canvas Group组件,调整层级权重也能实现文本上浮显示的效果。
内容的提问来源于stack exchange,提问作者DJG
相关产品推荐
相关产品推荐

