Unity TextMesh Pro 文字元件之字型圖集生成工具
原因
Unity 推薦使用 TextMesh Pro 來代替內建的現有文字元件如 Text Mesh 及 UI Text,因為 TextMesh Pro 可以渲染出非常清晰的文字。在使用過程中發現,發現有以下問題:
-
TextMesh Pro 需要先生成一張靜態字型圖集,每當靜態文字增加時,都需要開啟自帶的生成工具,一個引數一個引數的設定,非常麻煩,也不便於其他人員使用。
-
每一個字型資產都會生成一個圖集,這對於相同字型,但是不同樣式的字型資產就會冗餘字型圖集。
-
一個字型裡通常不會包含所有的字元,當遇到缺失字元時,就會空缺顯示,如果採用回撥字型方式,又會增加 Draw Call,最好是可以採用備用字型生成在同一個圖集裡。
-
某些字元在首位字型裡並不美觀,需要可以指定使用某個備用字型來渲染。
目標
這個工具要解決這些問題,達成以下目標:
-
一鍵式生成預設字型圖集
-
相同字型複用同一個圖集
-
字元缺失的採用備用字型
-
指定字元只採用某個字型
示意圖
原始碼
https://github.com/akof1314/UnityTMProFontCustomizedCreater
細節說明
每次生成字型圖集時,都要通過 Font Asset Creator 來設定,繁瑣且耗時。想要自動化的生成,就需要借鑑這個工具的實現,通過反射 【TextMeshPro-5.6-Editor.dll】可以看到 TMPro_FontAssetCreatorWindow 類的實現,但更好的方式是通過 Unity 2018 來安裝 TextMesh Pro 元件,就可以在包目錄下(C:\Users\Administrator\AppData\Local\Unity\cache\packages\
另外,相同的字型資產會歸位一類,在生成字型圖集的時候,只會生成一張,如下圖所示:
對於缺失的字元,準備多個備用字型,最好字型樣式比較相近。在生成完字型圖集後,檢查是否有【Missing Characters】,若有,則將這些缺失字元進入備用字型渲染,渲染完畢再拷貝到主字型圖集,為了方便區別,拷貝到圖集的右上角,如下圖所示:
下面是對比效果:
使用 MFYANSONG.OTF 字型單獨渲染的效果
使用 MFYANSONG.OTF 字型渲染 + 回撥 SYHT.OTF 字型渲染缺失字的效果
使用 MFYANSONG.OTF 字型 + 備用 FZYaSong-B.TTF 字型 + 備用 SYHT.OTF 字型渲染的效果