Unity-字體
可創(chuàng)建或?qū)隷_字體__以便在文本網(wǎng)格 (Text Mesh)?__組件__中使用。
導(dǎo)入字體文件
要在項(xiàng)目中添加字體,必須將字體文件放在 Assets 文件夾中。然后,Unity 會(huì)自動(dòng)將其導(dǎo)入。支持的字體格式為 TrueType 字體(.ttf 文件)和 OpenType 字體(.otf 文件)。
要更改字體的__大小 (Size),請(qǐng)?jiān)?Project 視圖__中突出顯示該字體,隨后將在?Inspector?的__導(dǎo)入設(shè)置 (Import Settings)__ 中提供多個(gè)選項(xiàng)。

屬性:????????????????????????????????????????????????????????????????????????????????????功能:
Font Size????????????????????????????字體的大小,基于文字處理程序中設(shè)置的大小。
Rendering mode????????????????字體渲染模式,告訴 Unity 如何對(duì)字形應(yīng)用平滑。
Character????????????????????????????要導(dǎo)入字體紋理的字體的字符集將此模式設(shè)置為 Dynamic 會(huì)導(dǎo)致 Unity 嵌入字體數(shù)據(jù)本身并在運(yùn)行時(shí)渲染字體字形(見(jiàn)下文)。
????????????????????????????????????????????特定于動(dòng)態(tài)字體的導(dǎo)入設(shè)置
屬性:????????????????????????????????????????????????????????????????????????????????????功能:
Include Font Data????????與動(dòng)態(tài) (Dynamic) 字體屬性一起使用時(shí),此設(shè)置可控制字體的打包。選中復(fù)選框后,TTF 將包含在構(gòu)建的輸出中。如果未選中復(fù)選框,則假定最終用戶(hù)將在自己的計(jì)算機(jī)上安裝該字體。請(qǐng)注意,字體受版權(quán)保護(hù),因此您只應(yīng)當(dāng)包含已獲得許可或自己創(chuàng)建的字體。
Font Names??????????????????當(dāng)字體或字符不可用時(shí)使用的后備字體列表(見(jiàn)下文)。
導(dǎo)入字體后,可在 Project 視圖中展開(kāi)字體,查看其已自動(dòng)生成的某些資源。導(dǎo)入期間創(chuàng)建兩個(gè)資源:“字體材質(zhì)”和“字體紋理”。與您可能熟悉的許多應(yīng)用程序不同,Unity 中的字體會(huì)轉(zhuǎn)換為紋理,并且顯示的字形將使用紋理四邊形進(jìn)行渲染。有效調(diào)整字體大小會(huì)更改此生成的紋理中每個(gè)字形使用的像素?cái)?shù)。文本網(wǎng)格資源便是使用這些自動(dòng)生成的字體紋理進(jìn)行紋理化的 3D 幾何體。您需要改變字體的大小以使這些資源看起來(lái)清晰。
動(dòng)態(tài)字體
在 Import Settings 中將?Characters?下拉選單設(shè)置為?Dynamic?時(shí),Unity 將不會(huì)預(yù)先生成包含所有字體字符的紋理。取而代之的做法是,它將使用 FreeType 字體渲染引擎來(lái)即時(shí)創(chuàng)建紋理。這樣做的好處是它可以節(jié)省下載流量和紋理內(nèi)存,特別是使用通常包含在用戶(hù)系統(tǒng)中的字體時(shí)(這種情況下不必包含字體數(shù)據(jù)),或者需要支持亞洲語(yǔ)言或大型字體大小時(shí)(這種情況下使用普通字體紋理可能使字體紋理非常大)。
當(dāng) Unity 嘗試使用動(dòng)態(tài)字體渲染文本但無(wú)法找到字體時(shí)(因?yàn)槲催x擇?Include Font Data__,并且用戶(hù)計(jì)算機(jī)上未安裝該字體),或者字體不包含請(qǐng)求的字形時(shí)(例如嘗試使用拉丁字體在東亞腳本中渲染文本時(shí),或者使用粗體/斜體字形文本時(shí)),它將嘗試?Font Names__ 字段中列出的每種字體,從而查看是否可以找到與項(xiàng)目中的字體名稱(chēng)匹配的字體(包含字體數(shù)據(jù))或者用戶(hù)計(jì)算機(jī)上安裝的字體是否具有請(qǐng)求的字形。如果找不到列出的后備字體或者這些字體不具有所請(qǐng)求的字形,Unity 將回退到硬編碼的全局后備字體列表,其中包含當(dāng)前運(yùn)行時(shí)平臺(tái)上通常安裝的各種國(guó)際字體。
請(qǐng)注意,有些目標(biāo)平臺(tái)(WebGL 和有些游戲主機(jī))沒(méi)有可供 Unity 訪(fǎng)問(wèn)以渲染文本的操作系統(tǒng)默認(rèn)字體。對(duì)于這些平臺(tái),將忽略?Include Font Data?設(shè)置,并會(huì)始終包含字體數(shù)據(jù)。所有要用作后備字體的字體都必須包含在項(xiàng)目中,因此如果需要渲染國(guó)際文本或是字體的粗體/斜體版本,則需要在項(xiàng)目中添加一個(gè)具有所需字符的字體文件,并在其他字體的?Font Names?列表中設(shè)置該字體,這樣應(yīng)該就會(huì)將該字體用作后備字體。如果字體設(shè)置正確,則后備字體將在字體導(dǎo)入器 (Font Importer) 檢視面板中列出,顯示在?References to other fonts in project?下。
默認(rèn)字體資源
默認(rèn)字體資源是動(dòng)態(tài)字體,設(shè)置為使用?Arial。如果 Unity 無(wú)法在計(jì)算機(jī)上找到 Arial 字體(例如,如果沒(méi)有安裝該字體),則將回退到 Unity 捆綁的字體,名為?Liberation Sans。
Liberation Sans 看起來(lái)很像 Arial,但它不包括粗體和斜體字體樣式,并且只有基本的拉丁字符集,所以帶樣式的文本或非拉丁字符可能會(huì)回退到其他字體或無(wú)法渲染出來(lái)。但是該字體有許可證,因此允許在播放器構(gòu)建中包含該字體。
自定義字體
要?jiǎng)?chuàng)建自定義字體,請(qǐng)從 Project 窗口中選擇“Create > Custom Font”。隨后將在項(xiàng)目庫(kù)中添加自定義的字體資源。

Ascii Start Offset?字段是一個(gè)十進(jìn)制數(shù),用于定義您希望作為?Character Rects?索引起點(diǎn)的 Ascii 索引。例如,如果 Ascii Start Offset 設(shè)置為 0,則大寫(xiě)字母 A 將位于索引 65 處,但如果 Ascii Start Offset 設(shè)置為 65,則字母 A 將位于索引 0 處。您可以在這里查閱 Ascii 表,但應(yīng)記住,自定義字體使用十進(jìn)制 Ascii 編號(hào)系統(tǒng)。
通過(guò)?Tracking?設(shè)置可修改每個(gè)字符與同一行下一個(gè)字符的接近程度,而通過(guò)?Line spacing?設(shè)置可定義每行與下一行的接近程度。
要?jiǎng)?chuàng)建字體材質(zhì),您需要將字體作為紋理導(dǎo)入,然后將該紋理應(yīng)用于材質(zhì),再將字體材質(zhì)拖到?Default Material?部分。
Character Rects?部分可定義字體的每個(gè)字符。

Size?字段用于定義字體中的字符數(shù)。
在每個(gè)?Element?中,有一個(gè)用于字符 Ascii 索引的索引 (Index) 字段。此值將是一個(gè)整數(shù),表示該元素中的字符。
要計(jì)算?UV?值,您需要弄清楚字符在 0 到 1 范圍內(nèi)的位置。為此,應(yīng)將 1 除以尺寸上的字符數(shù)。例如,如果有一個(gè)字體,該字體上的圖像尺寸為 256x128,橫向 4 個(gè)字符,縱向 2 個(gè)字符(所以為 64x64),那么 UV 寬度將是 0.25,UV 高度將是 0.5。
對(duì)于 UV X 和 Y,只需要確定所需的字符,然后將寬度或高度值乘以字母的列/行。
Vert?大小基于字符的像素大小,例如,如果每個(gè)字符均為 128x128,則將 128 和 –128 填入垂直 (Vert) 寬度 (W) 和高度 (H) 將得出正確比例的字母。Vert Y 必須為負(fù)。
Advance?將是從該字符的原點(diǎn)到下一個(gè)字符的原點(diǎn)所需的水平距離(以像素為單位)。在計(jì)算實(shí)際距離時(shí),應(yīng)將其乘以?Tracking。

Unicode 支持
Unity 擁有完整的 Unicode 支持。Unicode 文本允許您顯示 ASCII 字符集通常不支持的德語(yǔ)、法語(yǔ)、丹麥語(yǔ)或日語(yǔ)字符。如果您的字體支持,還可以輸入許多不同的特殊用途字符,如箭頭符號(hào)或 Option 鍵符號(hào)。
要使用 Unicode 字符,請(qǐng)從 Import Settings 中的?Characters?下拉選單中選擇?Unicode?或?Dynamic?,F(xiàn)在便可使用此字體顯示 Unicode 字符。如果要使用__文本網(wǎng)格 (Text Mesh),可在該組件的 Inspector 的?Text__ 字段中輸入 Unicode 字符。
如果要通過(guò)腳本設(shè)置顯示的文本,也可以使用 Unicode 字符。C# 編譯器完全支持基于 Unicode 的腳本。必須使用 UTF–16 編碼來(lái)保存腳本?,F(xiàn)在即可將 Unicode 字符添加到腳本中的字符串,然后它們便會(huì)在?UnityGUI?或文本網(wǎng)格 (Text Mesh) 中按預(yù)期顯示。
請(qǐng)注意,不支持代理項(xiàng)對(duì)。
更改字體顏色
根據(jù)字體的使用方式,可通過(guò)多種方法更改顯示字體的顏色。
文本網(wǎng)格
如果使用文本網(wǎng)格 (Text Mesh),可通過(guò)該字體的自定義__材質(zhì) (Material)__ 更改其顏色。在 Project 視圖中,單擊?Create > Material__,然后在?Inspector__ 中選擇并設(shè)置新創(chuàng)建的材質(zhì)。確保將字體資源中的紋理指定給該材質(zhì)。如果對(duì)字體材質(zhì)使用內(nèi)置的?GUI/Text Shader?著色器,則可在材質(zhì)的?Text Color?屬性中選擇顏色。
UnityGUI
如果使用 UnityGUI 腳本來(lái)顯示字體,則可在不同情況下更好地控制字體的顏色。要更改字體的顏色,請(qǐng)通過(guò)?Assets > Create > GUI Skin?創(chuàng)建?GUISkin__,然后定義特定控制狀態(tài)的顏色,例如:__Label > Normal > Text Color。有關(guān)更多詳細(xì)信息,請(qǐng)閱讀?GUI 皮膚 (GUI Skin) 頁(yè)面。
提示
要顯示導(dǎo)入的字體,請(qǐng)選擇字體并選擇?GameObject > Create Other > 3D Text。
可通過(guò)僅使用小寫(xiě)或大寫(xiě)字符來(lái)減小生成的字體紋理大小。