Unity中WolrdSpace下的UI展示在上层
一、问题描述
Unity 中 Canvas使用World Space布局的UI,想让它不被3d物体遮挡,始终显示在上层。
二、解决方案
- 使用shader解决
在 UI 的材质中禁用深度测试(ZTest),强制 UI 始终渲染在最上层。
Shader "Custom/UI_NoDepthTest"
{
Properties { ... }
SubShader
{
Tags {
"Queue"="Transparent+1000" // 设置高优先级队列
"RenderType"="Transparent"
}
ZWrite Off // 关闭深度写入
ZTest Always // 始终通过深度测试
...
}
}
- TMP没有办法赋予新的material,使用内置的材质
使用这个新的材质即可。