unity切换TextMesh的Font之后,文字错乱

最近在弄多语言,发现游戏中的字体库里面没有俄文导致显示俄文的时候不正常,没办法,只能切换语言的时候也切换支持俄文的字体库了,项目中使用NGUI的UILabel的地方,直接切换label.bitmapFont = realFont;就搞定了。没想到使用了TextMesh的地方,直接label.font=realFont;之后,文字显示就错乱了。如下图:

unity切换TextMesh的Font之后,文字错乱_第1张图片

弄了大半天,考虑是不是Font.textureRebuilt的问题,发现这个事件根本就没调用。

最后终于发现了其中的猫腻...

unity切换TextMesh的Font之后,文字错乱_第2张图片

unity切换TextMesh的Font之后,文字错乱_第3张图片

unity切换TextMesh的Font之后,文字错乱_第4张图片

原来切换之后,MeshRender里面的Meterial关联的还是旧字体的Meterial,因为Meterial不一样,里面的纹理也不一样,所以难怪会错乱。

知道问题就好办了,切换字体的时候,顺便修改下MeshRender的Meterials就搞定了。

if (label.font!=realFont) {
			label.font = realFont;
			//修复替换字体后文字错乱
			MeshRenderer meshRender = label.GetComponent ();
			if (meshRender != null) {
				meshRender.materials = new Material[]{ realFont.material };
			}
		}
unity切换TextMesh的Font之后,文字错乱_第5张图片

你可能感兴趣的:(unity3d,unity小技巧,开发,C#,游戏开发踩坑记录)