Unity 使用TextMesh解决3D文字穿墙的问题

2019-04-14 19:02发布

TextMesh使用时会使用系统的默认字体,Mesh的材质也是默认的Font Material,但是默认的效果,会出现穿墙的问题(隔着其他模型对象也能看到显示的文字)。 查阅相关资料发现,此问题是FontMaterial的默认shader造成的,需要重新更换shader。 解决此问题的方案如下:(unity版本5.6.0f3 Mac版) 1.找寻一个需要的中文或英文字体文件,必须是ttf格式,unity目前只支持ttf格式。 2.将字体文件导入进入unity,建立一个字体文件夹,把ttf文件放入即可; 3.在Project视图中选中字体,Inspector视图中修改 Character 类型为Unicode,点击Apply。字体下会自动生成材质和贴图文件,备用; 4.新建材质球,新建shader,shader内容如下。 Shader "GUI/Your_Font" {   
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 Off Fog { Mode Off }   
   Blend SrcAlpha OneMinusSrcAlpha   
   Pass {   
      Color [_Color]   
      SetTexture [_MainTex] {   
         combine primary, texture * primary   
      }   
   }   
}   

5.将新建的材质球的shader改为刚才新建的shader,Texture改为导入的字体的贴图(3步中的贴图); 6.TextMesh中更改Mesh的材质为新建的材质,修改TextMesh的font为导入的字体。 7.Over。