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得到。