【筆記】Unity TextMeshPro使用方法整理及常見中文顯示錯誤修復方法【Unity/GUI】

--

此篇為剛好操作到這個物件遇到中文顯示錯誤,最後想說統整並記錄解決方法的實務型學習心得。

TextMeshPro與Text(Legacy)的差異概述

TextMeshPro與Text(Legacy)都是Unity內建的文字工具,幫助開發者在UI顯示文字。Text(Legacy)屬於舊款的文字工具,能夠進行的操作與文字變化比較少。而TextMeshPro屬於Unity後推出的新款文字工具,可以直接在Inspector中進行更多的文字樣式編輯,諸如底線、陰影、柔化等等。TextMeshPro支援段落換行語法(\n),也因此較適合長文章顯示。此外,字體更換方法也不同,也間接導致字體維護的方法不太相同。

兩個文字物件create方式(左圖),與TextMeshPro文字樣式編輯位置(右圖)。

使用方式整理

下方顯示的是用程式碼修改文字內容的方法。若文字不需要動態修改,則在Inspector中設置好文字或文章內容即可。

TextMeshPro使用方式

using TMPro;
public TextMeshProUGUI TMP_text; //透過Inspector引用方式

TMP_text.text = "文字內容";

Text(Legacy)使用方式

using UnityEngine.UI;
public Text L_text; //透過Inspector引用方式

L_text.text = "文字內容";

引用字體方式整理

Text(Legacy)

只需要將Font檔案直接拉入Project視窗的Asset中,即可在Inspector裡更換使用。

TextMeshPro

相較Text(Legacy)需要多一個步驟,需要利用TextMeshPro使用的FontAsset。步驟如下:

Step1. 將Font檔案直接拉入Project視窗的Asset中。
Step2. 選擇該Font檔案,並如下圖選擇Create>TextMeshPro>FontAsset。
Step3. 完成創建TextMeshPro的FontAsset!你可以在Inspector裡更換使用了。

選擇該Font檔案後如上圖操作Create>TextMeshPro>FontAsset,建立字體資源。

TextMeshPro常見中文顯示錯誤修復方法

常見中文顯示錯誤的修改前與後。

常見中文顯示錯誤,是像下左圖修改前無法正確顯示中文字,而顯示一塊一塊方塊的狀況。其實只要遵循幾個步驟就可以解決。

Step1.

引用中文字體並套用,本例使用NotoSans。(若設定後尚無解決,接續進行步驟2。)

Step2.

如下右圖,在Generation Settings>Atlas Width & Atlas Height中,將數值改到「8192」。原數值可能是1024或512等等。

設定數值在Atlas Width & Atlas Height。

步驟2執行原因為,改變原本FontAsset裡的Atlas Material裡的解析度,到Unity能夠辨識的程度。此解決方法參考並濃縮網上各路大大的方案,若仍有疑問或錯誤可以再參考其他大大更詳細的解決方案。

以上,感謝大家的閱讀。
如果有幫助,歡迎給我點掌聲留下您的足跡,謝謝!

--

--

Millie Wei|央
Millie Wei|央

Written by Millie Wei|央

會寫一點程式的設計師,在名為「設計」的開放世界MMORPG自學修煉中,希望能當個補師,合格的魔法師也可以。

No responses yet