GText (Emoji, Hyperlink and Underline for UGUI)
圖文混排、超鏈接、下划線的UGUI解決方案
Github 地址
支持:
* 圖集動態表情
* 動態加載圖片
* 超鏈接
* 下划線效果
除動態加載圖片,整體只有1個DrawCall
效果圖:

輸入內容:
New GText
測試[AA]ceshi
測試[AB|36#dianji]ceshi自定義大小且可點擊表情
測試[a|40#dianji]ceshi自定義大小且可點擊動態表情
測試[0x01##ff0000#ClickLink=HyperLink超鏈接]ceshi
測試[0x02|30##00ffff#ClickImg=icons/1]ceshi顯示自定義加載表情
測試<material=u#00ff00>Underline下划線</material>ceshi
- 強行解釋關於動態表情:
圖文混排的實現使用shader的,所以無論你有多少個表情在里面,加上字體整體也只會有1個DrawCall,該功能實現參考EmojiText。修改了原工程的生成的計算方式,使用‘\u2001’做單個占位符,在計算mesh時更好的對位置,避免在角落時出現超出的現象,支持preferredWidth等功能。Shader部分使用了UV動畫的功能實現,使用texcoord1標記動畫幀數、該圖所在起始序號,texcoord0標記uv坐標。所以,使用GText的組件父Canvas節點中Additional Shader Channels 必須選擇TexCoord1。
使用方式:
[表情名稱|表情大小(可空,默認字體大小)#超鏈接內容(可空,如果填了點擊該圖片是會當超鏈接處理,返回超鏈接內容)]
- 強行解釋關於動態加載圖片:
動態加載一張額外的圖片顯示在圖文混排中,由於是額外加載,所以會在該組件下生成一張新的Image,這樣也就會增加一個DC,如圖中的GText/0。
使用方式:
該寫GText.cs下ShowImages()的加載圖片接口
[0x02(默認)|表情大小(可空,默認字體大小)#超鏈接內容(可空,如果填了點擊該圖片是會當超鏈接處理,返回超鏈接內容)=圖片加載參數(非空,用於加載圖片的參數,如路徑)]
- 強行解釋超鏈接
使用方式:
[0x01(默認)##顏色值(可空,表示下划線顏色,默認字體顏色)#超鏈接內容(非空,點擊超鏈接后的回調)=顯示內容(非空,超鏈接顯示的內容)]
- 強行解釋下划線
使用方式,使用unity默認標記material:
<material=u色值(色值可空,表示下划線顏色,默認字體顏色)>下划線內容</material>
u標識underline, 坐等以后增加其他效果0.0
使用方式:
-
創建圖集
選中表情圖片(大小最好是2的n次方),點擊Tools/Emoji Build后生成一張圖集、一個材質球、一個txt文本配置。
文本配置是在GText的Awake中需要加載的,可自行更改讀取方式。 -
生成組件
更改GTexBuilder.cs中的emojiMat路徑為上一步生成的材質球路徑,
在UI下右鍵UI/GText即可創建一個GText組件,創建和會默認更改父Canvas節點的Shader Channels

