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

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。


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值