unity切換TextMesh的Font之後,文字錯亂

最近在弄多語言,發現遊戲中的字體庫裏面沒有俄文導致顯示俄文的時候不正常,沒辦法,只能切換語言的時候也切換支持俄文的字體庫了,項目中使用NGUI的UILabel的地方,直接切換label.bitmapFont = realFont;就搞定了。沒想到使用了TextMesh的地方,直接label.font=realFont;之後,文字顯示就錯亂了。如下圖:


弄了大半天,考慮是不是Font.textureRebuilt的問題,發現這個事件根本就沒調用。

最後終於發現了其中的貓膩...




原來切換之後,MeshRender裏面的Meterial關聯的還是舊字體的Meterial,因爲Meterial不一樣,裏面的紋理也不一樣,所以難怪會錯亂。

知道問題就好辦了,切換字體的時候,順便修改下MeshRender的Meterials就搞定了。

if (label.font!=realFont) {
			label.font = realFont;
			//修復替換字體後文字錯亂
			MeshRenderer meshRender = label.GetComponent<MeshRenderer> ();
			if (meshRender != null) {
				meshRender.materials = new Material[]{ realFont.material };
			}
		}


發佈了110 篇原創文章 · 獲贊 56 · 訪問量 40萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章