Unity中WolrdSpace下的UI展示在上层

一、问题描述

Unity 中 Canvas使用World Space布局的UI,想让它不被3d物体遮挡,始终显示在上层。

二、解决方案

  1. 使用shader解决
    在 UI 的材质中禁用深度测试(ZTest),强制 UI 始终渲染在最上层。
Shader "Custom/UI_NoDepthTest"
{
    Properties { ... }
    SubShader
    {
        Tags { 
            "Queue"="Transparent+1000"  // 设置高优先级队列
            "RenderType"="Transparent" 
        }
        ZWrite Off      // 关闭深度写入
        ZTest Always    // 始终通过深度测试
        ...
    }
}
  1. TMP没有办法赋予新的material,使用内置的材质
    Unity中WolrdSpace下的UI展示在上层_第1张图片
    Unity中WolrdSpace下的UI展示在上层_第2张图片
    Unity中WolrdSpace下的UI展示在上层_第3张图片
    使用这个新的材质即可。

你可能感兴趣的:(Unity开发,unity,ui,游戏引擎)