【UGUI】圖文混排與超連接的解決方案

GText (Emoji, Hyperlink and Underline for UGUI)

圖文混排、超連接、下劃線的UGUI解決方案
Github 地址git

支持:
* 圖集動態表情
* 動態加載圖片
* 超連接
* 下劃線效果

除動態加載圖片,總體只有1個DrawCallgithub

效果圖:測試

輸入內容:
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
  1. 強行解釋關於動態表情:

圖文混排的實現使用shader的,因此不管你有多少個表情在裏面,加上字體總體也只會有1個DrawCall,該功能實現參考EmojiText。修改了原工程的生成的計算方式,使用‘\u2001’作單個佔位符,在計算mesh時更好的對位置,避免在角落時出現超出的現象,支持preferredWidth等功能。Shader部分使用了UV動畫的功能實現,使用texcoord1標記動畫幀數、該圖所在起始序號,texcoord0標記uv座標。因此,使用GText的組件父Canvas節點中Additional Shader Channels 必須選擇TexCoord1字體

使用方式:
[表情名稱|表情大小(可空,默認字體大小)#超連接內容(可空,若是填了點擊該圖片是會當超連接處理,返回超連接內容)]
  1. 強行解釋關於動態加載圖片:
    動態加載一張額外的圖片顯示在圖文混排中,因爲是額外加載,因此會在該組件下生成一張新的Image,這樣也就會增長一個DC,如圖中的GText/0。
使用方式:
該寫GText.cs下ShowImages()的加載圖片接口
[0x02(默認)|表情大小(可空,默認字體大小)#超連接內容(可空,若是填了點擊該圖片是會當超連接處理,返回超連接內容)=圖片加載參數(非空,用於加載圖片的參數,如路徑)]
  1. 強行解釋超連接
使用方式:
[0x01(默認)##顏色值(可空,表示下劃線顏色,默認字體顏色)#超連接內容(非空,點擊超連接後的回調)=顯示內容(非空,超連接顯示的內容)]
  1. 強行解釋下劃線
使用方式,使用unity默認標記material:
<material=u色值(色值可空,表示下劃線顏色,默認字體顏色)>下劃線內容</material>

u標識underline, 坐等之後增長其餘效果0.0

使用方式:動畫

  • 建立圖集
    選中表情圖片(大小最好是2的n次方),點擊Tools/Emoji Build後生成一張圖集、一個材質球、一個txt文本配置。
    文本配置是在GText的Awake中須要加載的,可自行更改讀取方式。ui

  • 生成組件
    更改GTexBuilder.cs中的emojiMat路徑爲上一步生成的材質球路徑,
    在UI下右鍵UI/GText便可建立一個GText組件,建立和會默認更改父Canvas節點的Shader Channelscode

相關文章
相關標籤/搜索