TextMesh的3D文字会穿透过3D模型是因为使用的是默认的Font Material造成的,因为这个材质使用的是GUI/Text Shader所以会显示在上面,解决办法就是换一个材质和Shader了。
创建一个Shader:
//一个固定管线Shader 会编译为顶点着色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" } //只要没有关闭ZTest深度测试,TestMesh就不会出现穿透现象 Lighting Off Cull Off ZWrite On Fog{ Mode Off } Blend SrcAlpha OneMinusSrcAlpha Pass{ Color[_Color] SetTexture[_MainTex]{ combine primary, texture * primary } } } }
创建一个材质使用这个Shader,将材质拖给Mesh Renderer使用,在材质上赋值正确的Font Texture就可以了。Font Texture可以将ttf字体的Character设置为Unicode得到。