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。