總的筆記:https://www.cnblogs.com/guobaoxu/p/12055930.html
TMPro,完整的叫TextMeshPro,原本是個插件,后來Unity逐漸做成了內置,主要特點是在放大之后不會模糊,逐漸成為主流,但是他的字庫是需要自己制作的,而不是直接用的字體文件,隨之而來的缺點就是字庫沒辦法做得足夠完整,也失去了動態字體。關於TMPro的漢化,分成兩個部分,文字和字體,本文講字體替換,文字的修改請看這篇:Unity手游漢化筆記①:UABE+AssetStudio編輯MonoBehavior類型Asset
一、使用工具:
Unity版本:2018.4.5f1
AssetStudio(地址:https://www.perfare.net/tag/assetstudio)
UABE(地址:https://7daystodie.com/forums/showthread.php?22675-Unity-Assets-Bundle-Extractor)
二、字體替換
1.用Unity做一個簡單的Demo
效果如下:
做Demo的過程中你應該會發現,一個TMPro的字體以一個SDF結尾的Asset文件呈現,展開后如下:
實際上還有一個MonoBehaviour,整體類似於BMFont,所以我在替換的時候和BMFont思路類似,通過維持設置來保證紋理不變化,只替換MonoBehavior和圖片
2.獲得新字體
先用Asset Studio來預覽,打開並加載Data文件夾(Android的話在Asset/bin/Data),在MonoBehavior分類下,會找到一個simfang SDF,這就是我們的字體最關鍵的部分了,一般TMPro的字體都會以SDF結尾,他的參數列表很長,如下:
我們根據這里面的一些信息來制作新字體的Demo,使用相同版本的Unity來制作。
在Unity中,先從菜單欄-Window-TextMeshPro-FontAssetCreator調出Font Asset Creator,這里的設置在MonoBehavior中體現在了m_CreationSettings部分,可以把Asset Studio中的參數列表放進一個編輯器里,用搜索功能找到他,我們要保持設置,具體如下:
Sampling Point Size 對應右側pointSizeSamplingMode和pointSize
Padding對應右側padding
Packing Method對應右側packingMode
Atlas Resolution對應atlasWidth和atlasHeight
Character Set及其隨后小方框對應右側characterSetSelectionMode、characterSequence、referencedFontAssetGUI、referencedTextAssetGUID
Render Mode對應右側renderMode(看不懂對應關系,好在一般都是默認值)
Get Kerning Pairs對應右側includeFonrFeatures
Generate Font Atlas后就得到了圖片,Save之后就得到了Asset文件,隨便弄個Text,把字體綁上去,然后生成整個項目
3.替換
剩下的步驟就和替換BMFont的時候基本一樣了,用UABE導出新舊字體的圖片、MonoBehavior參數文本,圖片直接導回去,MonoBehavior要做以下修改:
① 指針部分,把參數文本復制到帶搜索功能的編輯器里,先搜索關鍵詞“pathid”(關閉大小寫匹配),有幾個部分:
最開頭的m_GameObject和m_Script:這是MonoBehavior都需要的,應該保持舊的數值
material:這是一個關鍵的東西,字體綁定的紋理,這里也要維持舊的數值
m_AtlasTextures:指向圖片,也要維持舊的數值
其他的匹配項都是0,不用管。
② 哈希值,搜索關鍵詞“hash”和“guid”,各有兩處匹配,這兩個我也選擇了保留舊的數值,以免出錯
4.結果