本文檔為22年在項(xiàng)目上開發(fā)UI的時(shí)候,在研究學(xué)習(xí)TMP過程中寫下的。如何創(chuàng)建動(dòng)態(tài)字體等功能網(wǎng)上已有其他大佬分享的文章,本文主要研究了TMP控件的描邊和投影功能,以及字體效果。

一、為什么要使用TMP
Unity 自帶的Text文字組件,在高分辨率模式下,文字清晰度不足。且如需要描邊和投影效果,則對(duì)應(yīng)的效果也非常糟糕。


從圖可見,文字模糊。描邊效果在文字折角處有丟失。
因此,在部分需要較高清晰度,或需要額外文字效果的情況下,可使用Text Mesh Pro組件來實(shí)現(xiàn)所需要的效果。
1.1 TMP優(yōu)點(diǎn)
1、 豐富的文本段落控制參數(shù):TextMesh Pro提供了對(duì)文本格式和布局的改進(jìn)控制,超過30個(gè)豐富的文本標(biāo)簽,包括支持上標(biāo),下標(biāo),下劃線,劃線,縮進(jìn),對(duì)齊,單步,行高,以及更多。支持多種字體和精靈、自定義樣式等功能
2、 支持TrueType和OpenType
3、 支持以材質(zhì)的方式給文字添加紋理效果
1.2 TMP缺點(diǎn)
1、 不能直接使用TTF字體,需要基于TTF字體創(chuàng)建專用字體文件資源。
2、 對(duì)中文支持不夠好,需要使用動(dòng)態(tài)字體模式生成字體文件。
二、創(chuàng)建字體TMP_Font Asset
2.1快速創(chuàng)建
在unity編輯器界面的project窗口,右鍵要使用 的TTF字體文件,在右鍵菜單中按順序選擇 Create>TextMeshPro>Font Asset,即可快捷創(chuàng)建對(duì)應(yīng)的字體資源。



生成的字體資源,icon為藍(lán)色的F字母。選中該資源,在Inspector窗口中可以看到unity定義的字體類型為TMP_Font Asset


2.2手動(dòng)創(chuàng)建
手動(dòng)創(chuàng)建字體資源,按照以下路徑進(jìn)入創(chuàng)建界面:Window>Text Mesh Pro>Font Asset Creator








2.2.1 Padding示例
下面分別展示Padding為0,5,10的SDF font 紋理,(SDF模式字體,越模糊效果越好)



2.2.2 Rander Mode效果示例

1、 SMOOTH、RASTER模式的字體,其投影不支持模糊效果。
2、 RASTER模式的字體鋸齒強(qiáng)烈。
3、 SDF各類型效果差異不大,基本使用SDFAA模式即可,除非該字體使用SDFAA會(huì)出現(xiàn)亂碼,則選擇SDF或SDF8進(jìn)行嘗試。
三、TMP_Font Asset結(jié)構(gòu)說明

TMP字體文件內(nèi)部包含一個(gè)材質(zhì)球資源、文字貼圖資源。
3.1 材質(zhì)球參數(shù)說明
3.1.1 Face

| 屬性 | 說明 |
|---|---|
| Color | 選擇字符表面的顏色和透明度。(該顏色將與頂點(diǎn)顏色Vertex Color相結(jié)合。) |
| Texture | 選擇要應(yīng)用于字符表面的紋理。(顏色會(huì)影響紋理的顏色,如何應(yīng)用紋理中的映射選項(xiàng)控制到字符/文本對(duì)象編輯器面板。紋理選項(xiàng)不是在所有著色器上都可用。) |
| Softness | 控制字體的柔軟度。 |
| Dilate | 增加或減少字符的大小。 |
紋理舉例:

3.1.2 Outline描邊

| 屬性 | 說明 |
|---|---|
| Color | 控制字符輪廓的顏色和透明度。 |
| Texture | 選擇要應(yīng)用于字符表面的紋理。(顏色會(huì)影響紋理的顏色,如何應(yīng)用紋理中的映射選項(xiàng)控制到字符/文本對(duì)象編輯器面板。紋理選項(xiàng)不是在所有著色器上都可用。) |
| Thickness | 控制輪廓線的厚度。通常0.1 = 2像素描邊 |
描邊效果對(duì)比:

3.1.3 Underlay陰影

| 屬性 | 說明 |
|---|---|
| Underlay Type | 投影類型:None:無 Normal:常規(guī)投影 Inner:字體內(nèi)部 |
| Color | 投影顏色 |
| Offset X | 投影X軸偏移值 |
| Offset Y | 投影Y軸偏移值 |
| Dilate | 投影尺寸 |
| Softness | 投影模糊值 |
陰影效果:

四、多材質(zhì)球設(shè)置
每個(gè)字體文件內(nèi)部有一個(gè)材質(zhì)球,但每個(gè)材質(zhì)球只能關(guān)聯(lián)一個(gè)shader著色器,可能會(huì)遇到不同的文字組件使用相同的字體,但有些文字需要加投影,有些文字需要加描邊。而一個(gè)材質(zhì)球無法配置成在不同文字組件中開啟不同的參數(shù)配置。
但TMP字體可以配置多個(gè)材質(zhì)球,不同的材質(zhì)球設(shè)置不同的參數(shù), TMP組件的Inspector中的Material Preset切換材質(zhì)球以實(shí)現(xiàn),在不同的文字組件中出現(xiàn)描邊、投影效果。
4.1 創(chuàng)建多個(gè)材質(zhì)球

1、 在需要?jiǎng)?chuàng)建額外材質(zhì)球字體內(nèi)部,選中材質(zhì)球。
2、 按 Ctrl+D,即可生成一個(gè)額外材質(zhì)球。
3、 生成的額外材質(zhì)球可以在名字最后加效果名稱以進(jìn)行區(qū)分。比如:xxxx_outline、xxxx_shadow
4.2 切換材質(zhì)球

1、 在TMP組件中,點(diǎn)擊Material Preset,即可在下拉菜單中選擇其他的預(yù)設(shè)材質(zhì)球。