UGUI-富文本
UI 元素和文本網(wǎng)格的文本可以包含多種字體樣式和大小。UI 系統(tǒng)和舊版 GUI 系統(tǒng)都支持富文本。Text、GUIStyle、GUIText 和 TextMesh 類都具有?Rich Text?設(shè)置,此設(shè)置會(huì)指示 Unity 在文本中查找標(biāo)記標(biāo)簽。Debug.Log?函數(shù)也可使用這些標(biāo)記標(biāo)簽來增強(qiáng)代碼中的錯(cuò)誤報(bào)告。標(biāo)簽不會(huì)顯示,但會(huì)指示要應(yīng)用于文本的樣式更改。
標(biāo)記格式
該標(biāo)記系統(tǒng)受 HTML 的啟發(fā),但并不打算與標(biāo)準(zhǔn) HTML 嚴(yán)格兼容?;舅枷胧强梢詫⑽谋镜囊徊糠职谝粚ζヅ錁?biāo)簽內(nèi):
???We are <b>not</b> amused
如示例所示,標(biāo)簽就是“尖括號(hào)”字符 < 和 > 內(nèi)的文本片段。標(biāo)簽內(nèi)的文本表示標(biāo)簽的名稱(在本示例中就是?b)。請注意,該部分末尾的標(biāo)簽與開頭的標(biāo)簽具有相同名稱,但添加了斜杠 / 字符。標(biāo)簽不會(huì)直接顯示給用戶,而是用于說明其包裹的文本的樣式。上例中使用的 b 標(biāo)簽將粗體應(yīng)用于單詞“not”,因此文本將在屏幕上顯示為:
We are?not?amused
標(biāo)記的文本部分(包括將其包裹的標(biāo)簽)稱為元素。
嵌套的元素
通過將一個(gè)元素“嵌套”在另一個(gè)元素中,可以將多個(gè)樣式應(yīng)用于文本的一部分
???We are <b><i>definitely not</i></b> amused
i 標(biāo)簽表示應(yīng)用斜體樣式,因此將在屏幕上顯示為
We are?definitely not?amused
請注意結(jié)束標(biāo)簽的順序與起始標(biāo)簽的順序相反。為了更清楚說明原因,現(xiàn)在讓內(nèi)部標(biāo)簽不必跨越最外層元素的整個(gè)文本
???We are <b>absolutely <i>definitely</i> not</b> amused
得到的結(jié)果為
We are?absolutely?definitely?not?amused
標(biāo)簽參數(shù)
有些標(biāo)簽對文本具有簡單的“全有或全無”(all-or-nothing) 效果,但其他標(biāo)簽可能允許變化。例如,color?標(biāo)簽需要知道要應(yīng)用的顏色。應(yīng)使用參數(shù)將此類信息添加到標(biāo)簽中:
???We are <color=green>green</color> with envy
請注意,結(jié)束標(biāo)簽不包含參數(shù)值??蛇x擇將值用引號(hào)引起來,但這不是必需的。
支持的標(biāo)簽
以下列表描述了 Unity 支持的所有樣式標(biāo)簽。


material
這僅對文本網(wǎng)格有用,使用參數(shù)指定的材質(zhì)渲染文本部分。值為 Inspector 顯示的文本網(wǎng)格材質(zhì)數(shù)組的索引。
???We are <material=2>texturally</material> amused
quad
這僅對文本網(wǎng)格有用,渲染與文本內(nèi)聯(lián)的圖像。采用指定圖像材質(zhì)的參數(shù)、圖像高度參數(shù)(以像素為單位)以及另外四個(gè)表示待顯示圖像的矩形區(qū)域的參數(shù)。與其他標(biāo)簽不同,quad 不會(huì)包裹一段文本,因此沒有結(jié)束標(biāo)簽;斜杠字符放在初始標(biāo)簽的末尾,表示“自動(dòng)關(guān)閉”。
???<quad material=1 size=20 x=0.1 y=0.1 width=0.5 height=0.5 />
這將選擇渲染器材質(zhì)數(shù)組中位置的材質(zhì),并將圖像的高度設(shè)置為 20 像素。圖像的矩形區(qū)域由 x、y、寬度和高度值決定,這些值全部表示為紋理的未縮放寬度和高度的一定比例。
Editor GUI
默認(rèn)情況下,Editor GUI 系統(tǒng)中已禁用富文本,但可以使用自定義 GUIStyle 顯式啟用富文本。應(yīng)將 richText 屬性設(shè)置為 true,并將樣式傳遞給相關(guān)的 GUI 函數(shù):
GUIStyle style = new GUIStyle ();?
style.richText = true;?
GUILayout.Label("<size=30>Some <color=yellow>RICH</color> text</size>",style);