【筆記】Unity TextMeshPro使用方法整理及常見中文顯示錯誤修復方法【Unity/GUI】
此篇為剛好操作到這個物件遇到中文顯示錯誤,最後想說統整並記錄解決方法的實務型學習心得。
TextMeshPro與Text(Legacy)的差異概述
TextMeshPro與Text(Legacy)都是Unity內建的文字工具,幫助開發者在UI顯示文字。Text(Legacy)屬於舊款的文字工具,能夠進行的操作與文字變化比較少。而TextMeshPro屬於Unity後推出的新款文字工具,可以直接在Inspector中進行更多的文字樣式編輯,諸如底線、陰影、柔化等等。TextMeshPro支援段落換行語法(\n),也因此較適合長文章顯示。此外,字體更換方法也不同,也間接導致字體維護的方法不太相同。
使用方式整理
下方顯示的是用程式碼修改文字內容的方法。若文字不需要動態修改,則在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裡更換使用了。
TextMeshPro常見中文顯示錯誤修復方法
常見中文顯示錯誤,是像下左圖修改前無法正確顯示中文字,而顯示一塊一塊方塊的狀況。其實只要遵循幾個步驟就可以解決。
Step1.
引用中文字體並套用,本例使用NotoSans。(若設定後尚無解決,接續進行步驟2。)
Step2.
如下右圖,在Generation Settings>Atlas Width & Atlas Height中,將數值改到「8192」。原數值可能是1024或512等等。
步驟2執行原因為,改變原本FontAsset裡的Atlas Material裡的解析度,到Unity能夠辨識的程度。此解決方法參考並濃縮網上各路大大的方案,若仍有疑問或錯誤可以再參考其他大大更詳細的解決方案。
以上,感謝大家的閱讀。
如果有幫助,歡迎給我點掌聲留下您的足跡,謝謝!