[專欄精選]TextMeshPro插件

你好,我是元宇宙大智滞欠,讓你學(xué)Unity快人幾步忙菠。


小新:“UI里面還有一類組件是用TextMeshPro開頭的何鸡,這類組件有啥用啊牛欢?”
大智:“TextMeshPro是Unity收購的一個(gè)第三方插件骡男,可以解決文字渲染的很多問題,可以替換UI Text傍睹。比如UI Text就沒辦法對(duì)文字加入特效隔盛。”
小新:“哇拾稳,可以直接對(duì)文字加入動(dòng)態(tài)特效八笨弧?那就不用美術(shù)同學(xué)辛苦去做了访得?”
大智:“是的哦”
小新:“那我們今天就來學(xué)習(xí)一下這個(gè)吧龙亲!”

TextMesh Pro

TextMesh Pro是Unity中文字渲染的終極解決方案,原本是一個(gè)第三方插件,后被Unity收購后并入U(xiǎn)nity鳄炉,現(xiàn)在可以免費(fèi)使用杜耙。

安裝

對(duì)于Unity2018及以后的版本,可以從菜單欄Window > Package Manager中安裝TextMesh Pro迎膜。

Unity2018.2及之后的版本TextMesh Pro包會(huì)被默認(rèn)安裝到工程中泥技,無需手動(dòng)安裝。

對(duì)于Unity2017及之前的版本磕仅,可以通過AssetStore(https://assetstore.unity.com/packages/essentials/beta-projects/textmesh-pro-84126)下載導(dǎo)入此插件珊豹。

創(chuàng)建

TextMeshPro最基礎(chǔ)的用法就是使用它的Text組件來顯示文本。有兩種使用方法榕订,一種是通過網(wǎng)格MeshRenderer渲染店茶,一種是通過UI系統(tǒng)渲染。

Mesh方式創(chuàng)建方法:Hierarchy的Create菜單(右鍵菜單)> 3D > TextMesh Pro - Text

UI方式創(chuàng)建方法:Hierarchy的Create菜單(右鍵菜單)> UI > TextMesh Pro - Text

第一次創(chuàng)建時(shí)劫恒,會(huì)彈出一個(gè)提示窗口:

這似乎是您第一次訪問TextMesh Pro贩幻,因此我們需要為您的項(xiàng)目添加對(duì)使用TextMesh Pro至關(guān)重要的資源。這些新資源將放置在項(xiàng)目的根目錄中的“TextMesh Pro”文件夾两嘴。

點(diǎn)擊下方的按鈕Import TMP Essentials即可丛楚。

導(dǎo)入必要資源后,下方的TMP Examples & Extras會(huì)變?yōu)榭牲c(diǎn)擊狀態(tài)憔辫。這些資源是可選導(dǎo)入的趣些,可以點(diǎn)擊Import TMP Examples & Extras來導(dǎo)入實(shí)例和額外資源。

Examples&Extras包中包含額外的資源和示例贰您,可以更輕松地發(fā)現(xiàn)和學(xué)習(xí)TextMesh Pro的強(qiáng)大功能坏平。這些額外資源將與TMP基本資源放在同一文件夾中。

TextMesh Pro - Text 和 UGUI - Text 的區(qū)別

TextMesh和UIText的渲染對(duì)比

UGUI的Text使用了一張字體貼圖锦亦,Unity把所有需要顯示的字符放到了一張圖集中舶替,字符的形狀是通過像素定義的。當(dāng)我們放大時(shí)杠园,像素不夠用就會(huì)出現(xiàn)文字變模糊的情況顾瞪。

TextMesh Pro的Text使用了不同的技術(shù)來渲染文字,叫做Signed Distance Field(后面簡稱SDF抛蚁,對(duì)該技術(shù)感興趣的同學(xué)可以自行搜索一下)玲昧。和UGUI類似,這個(gè)技術(shù)同樣需要將字符放到一個(gè)圖集中篮绿,但是不使用像素來代表字符的形狀,而使用SDF技術(shù)來生成字符的形狀吕漂。使用這種技術(shù)字符在渲染時(shí)不會(huì)因?yàn)榭s放而造成字符模糊的情況亲配,總是能夠準(zhǔn)確的渲染字符的邊緣。

創(chuàng)建字體

TextMesh Pro無法像UGUI Text那樣使用動(dòng)態(tài)字體,因?yàn)門extMesh Pro需要對(duì)字體進(jìn)行預(yù)處理來計(jì)算SDF吼虎,這部分計(jì)算非常耗時(shí)犬钢。這對(duì)于英文字體來說影響不大,一個(gè)字體文件或一張貼圖包含的信息都很少思灰,但是對(duì)于字符非常多的語言如中文就影響很大玷犹。

所以對(duì)于中文環(huán)境建議如下:

  • 對(duì)于游戲中顯示的文字可以使用TextMesh Pro的SDF字體,提高顯示效果和特效處理洒疚。
  • 對(duì)于游戲中的輸入框建議使用UGUI自帶輸入框歹颓,使用動(dòng)態(tài)字體。

創(chuàng)建SDF字體文件的過程如下:
1油湖、菜單欄打開Window > TextMeshPro > Font Asset Creator

2巍扛、在Font Source中選擇你想要?jiǎng)?chuàng)建的字體

3、在Character Set中選擇要生成的字符集

4乏德、其他選項(xiàng)根據(jù)需要進(jìn)行設(shè)置(下面會(huì)詳細(xì)說明每個(gè)屬性的作用)

5撤奸、點(diǎn)擊下方的Generate Font Atlas按鈕生成字體

6、生成結(jié)束后記得點(diǎn)擊Save保存**

Font Creator窗口屬性

Font Source 選擇要?jiǎng)?chuàng)建SDF字體的源字體

Font Size 創(chuàng)建字體的字號(hào)的大小喊括。

  • Auto Sizing 建議使用該選項(xiàng)胧瓜。根據(jù)給定Atlas Resolution(圖集分辨率)來計(jì)算并使用最大字號(hào)。
  • Custom 自定義字號(hào)郑什。

Font Padding 圖集中每個(gè)字符之間的間隔府喳,以便在渲染時(shí)能卻分他們的邊緣。此外padding也用于文字的特效蹦误,所以不宜過薪俾!;但是也不宜過大强胰,過大會(huì)造成更大的atlas分辨率或者atlas上能承載的字符更少舱沧。對(duì)于512*512的圖集,padding為5通常比較合適偶洋。

Packing Method 打包方式

  • Fast 可能計(jì)算出不是最大的字號(hào)熟吏,但是計(jì)算速度會(huì)快一些
  • Optimum 可以計(jì)算出圖集上能承載的最大的字號(hào)
    通常在測試設(shè)置時(shí)使用Fast,在最終打包時(shí)使用Optimum

Atlas Resolution 使用SFD字體時(shí)玄窝,更高的分辨率會(huì)產(chǎn)生更精細(xì)的漸變牵寺,從而產(chǎn)生更高質(zhì)量的字體。對(duì)于大多數(shù)字體恩脂,僅包含所有ASCII字符時(shí)帽氓,512x512紋理分辨率足夠用。

當(dāng)需要支持?jǐn)?shù)千個(gè)字符時(shí)俩块,不得不使用大紋理黎休。但即使在最高分辨率下浓领,也可能無法滿足所有要求。在這種情況下势腮,可以通過創(chuàng)建多個(gè)字體資源來拆分字符联贩。將最常用的字符放在主字體資源中,將其他字符放在后備(fallback)字體資源中捎拯。

Character Set 字體文件中的字符不會(huì)自動(dòng)包含在字體資源中泪幌。你必須指定你需要的那些。你可以選擇一些預(yù)定義的字符集署照,也可以自己提供字符列表祸泪。

  • ASCII 大小寫字母+數(shù)字+常見符號(hào)
  • Extended ASCII 包含所有的ASCII字符
  • ASCII lowercase 小寫字母+數(shù)字+常見符號(hào)
  • ASCII uppercase 大寫字母+數(shù)字+常見符號(hào)
  • Numbers + Symbols 數(shù)字+常見符號(hào)
  • Custom Range 使用十進(jìn)制來制定字符的編碼范圍,可以使用減號(hào)和英文逗號(hào)來指定范圍藤树,如32-126,161-255
使用自定義字符范圍時(shí)浴滴,可以直接引用一個(gè)SDF字體,使用這個(gè)字體中的字符集
  • Unicode Range(Hex) 使用16進(jìn)制來制定字符的編碼范圍岁钓,可以使用減號(hào)和英文逗號(hào)來指定范圍升略,如20-7E,A1-FF

  • Custom Characters 自定義字符,直接輸入對(duì)應(yīng)的字符

  • Characters from file 從外部文件中導(dǎo)入字符

注意要包含空格字符屡限,除非確定你不需要它

Font Style 你可以選擇幾種不同的字體樣式品嚣。這些設(shè)置僅適用于位圖字體。
你可以通過shader配置SDF字體的樣式钧大,可以選擇粗體翰撑、斜體、粗體加斜體和描邊啊央,也可以控制粗體和輪廓的強(qiáng)度眶诈。

Font Render Mode 距離場模式創(chuàng)建SDF紋理需要與SDF shader一起使用。字符是在高分辨率下采樣來創(chuàng)建良好的漸變瓜饥。16x是默認(rèn)值并且足以用于大多數(shù)情況逝撬。32x生成較慢但可以讓復(fù)雜或小字符產(chǎn)生更好的質(zhì)量。
其他模式直接將字符渲染為位圖乓土,以便與位圖字體一起使用宪潮。Raster模式不使用抗鋸齒,Smooth模式使用抗鋸齒趣苏。兩者都有一個(gè)Hinted模式狡相,它將字符像素與紋理像素對(duì)齊以獲得更清晰的結(jié)果。

Get Kerning Pairs? 你可以選擇從字體中提取字距數(shù)據(jù)食磕。此數(shù)據(jù)用于調(diào)整特定字符對(duì)之間的間距尽棕,以產(chǎn)生更好的視覺效果。但是請(qǐng)注意很多字體沒有字距數(shù)據(jù)彬伦。

總結(jié)

大智:“SDF字體創(chuàng)建完以后就能用于TMP的text了滔悉◇霸茫”
小新:“這個(gè)插件確實(shí)很強(qiáng)大,文字顯示看起來真舒服氧敢。”

今日思考題

大智:“把你的界面里的文字替換成TMP的text看看效果如何吧询张!”
小新:“好嘞”
大智:“收獲別忘了分享出來孙乖!也別忘了分享給你學(xué)Unity的朋友,也許能夠幫到他份氧∥ò溃”

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蜗帜,隨后出現(xiàn)的幾起案子恋拷,更是在濱河造成了極大的恐慌,老刑警劉巖厅缺,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蔬顾,死亡現(xiàn)場離奇詭異,居然都是意外死亡湘捎,警方通過查閱死者的電腦和手機(jī)诀豁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窥妇,“玉大人舷胜,你說我怎么就攤上這事』铘妫” “怎么了烹骨?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長材泄。 經(jīng)常有香客問我沮焕,道長,這世上最難降的妖魔是什么脸爱? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任遇汞,我火速辦了婚禮,結(jié)果婚禮上簿废,老公的妹妹穿的比我還像新娘空入。我一直安慰自己,他們只是感情好族檬,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布歪赢。 她就那樣靜靜地躺著,像睡著了一般单料。 火紅的嫁衣襯著肌膚如雪埋凯。 梳的紋絲不亂的頭發(fā)上点楼,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音白对,去河邊找鬼掠廓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛甩恼,可吹牛的內(nèi)容都是我干的蟀瞧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼条摸,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼悦污!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钉蒲,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤切端,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后顷啼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體踏枣,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年线梗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了椰于。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡仪搔,死狀恐怖瘾婿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情烤咧,我是刑警寧澤偏陪,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站煮嫌,受9級(jí)特大地震影響笛谦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜昌阿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一饥脑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧懦冰,春花似錦灶轰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至内地,卻和暖如春伴澄,著一層夾襖步出監(jiān)牢的瞬間赋除,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來泰國打工非凌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留举农,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓敞嗡,卻偏偏與公主長得像并蝗,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子秸妥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容