Unity中如何将对象前置到其他物体前方正常显示?
Unity对象调整到前方显示的操作方法
你把对象拖到Hierarchy面板上层仍被遮挡,是因为Unity的渲染顺序不是单靠Hierarchy上下位置决定,分场景对应调整即可:
- 如果是2D Sprite对象:
- 选中player对象,找到Sprite Renderer组件,先确认
Sorting Layer排序:Sorting Layer列表里越靠下的层渲染优先级越高,把player所在层拖到遮挡它的对象所在层的下方即可。 - 同一个Sorting Layer下,调整
Order in Layer参数,数值越大显示越靠前,把player的这个值改得比遮挡对象大就行。
- 选中player对象,找到Sprite Renderer组件,先确认
- 如果是UGUI UI对象:
同Canvas下默认Hierarchy节点越靠下渲染越晚、显示越靠前,拖到上层是操作反了,把player节点拖到同层级所有需要被它遮挡的节点的下方即可;如果跨Canvas,调整Canvas组件的Sort Order数值,数值大的Canvas整体显示在更前面。 - 如果是3D场景对象:
- 先看Transform组件的Position Z值:默认透视相机是沿Z轴负方向拍摄,Z值越小(离相机越近)的对象越靠前,把player的Z坐标改得比遮挡它的对象小即可。
- 如果Z轴位置正确仍被遮挡,检查对象使用材质的
Render Queue值:数值越小越先渲染,会被数值大的后渲染对象遮挡,把player材质的这个值调大即可。
快速排查技巧:如果Scene视图里player显示位置正常,Game视图里层级不对,优先检查相机的Culling Mask是否正确包含player所在层、有没有开启错误的后处理效果强行覆盖渲染层级。
内容的提问来源于stack exchange,提问作者Hossein Fatemi
相关产品推荐
相关产品推荐

