1. 程式人生 > >unity中3D text渲染遮擋問題解決

unity中3D text渲染遮擋問題解決

先描述一下問題:在3D場景中,我用Text Mesh做了個3D字型,放置在背景之前,但是在game視圖裡卻被背景遮擋,而且換位置卻可以顯示,層次什麼並沒問題。

找了很多方法終於解決。3D Text的預設材質的shader是GUI/Text Shader,而且不可以去手動更改,有了GUI的穿透顯示的特性。解決辦法是替換一個Shader,替換掉3D Text上的預設材質。

從網上找到一段程式碼,寫入新建的shader:

Shader "Custom/3D Text Shader" {
    Properties {
        _MainTex ("Font Texture", 2D) = "white" {}
        _Color ("Text Color", Color) = (1,1,1,1)
    }


    SubShader {
        Tags{ "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
        Lighting Off Cull Off ZWrite On Fog { Mode Off }
        Blend SrcAlpha OneMinusSrcAlpha
        Pass {
            Color [_Color]
            SetTexture [_MainTex] {
                combine primary, texture * primary
            }
        }
    }
}
新建一個Material,改為這個shader。

在你匯入的字型中Character若設定為Unicode則無法修改字型大小,報出如下警告:


改為Dynamic,這樣才可以修改。

最後,字型拖給Text Mesh,新建的材質球拖給Mesh Renderer,字型下的Font Texture拖給材質球。