圖文混排、超連接、下劃線的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
圖文混排的實現使用shader的,因此不管你有多少個表情在裏面,加上字體總體也只會有1個DrawCall,該功能實現參考EmojiText。修改了原工程的生成的計算方式,使用‘\u2001’作單個佔位符,在計算mesh時更好的對位置,避免在角落時出現超出的現象,支持preferredWidth等功能。Shader部分使用了UV動畫的功能實現,使用texcoord1標記動畫幀數、該圖所在起始序號,texcoord0標記uv座標。因此,使用GText的組件父Canvas節點中Additional Shader Channels 必須選擇TexCoord1。字體
使用方式: [表情名稱|表情大小(可空,默認字體大小)#超連接內容(可空,若是填了點擊該圖片是會當超連接處理,返回超連接內容)]
使用方式: 該寫GText.cs下ShowImages()的加載圖片接口 [0x02(默認)|表情大小(可空,默認字體大小)#超連接內容(可空,若是填了點擊該圖片是會當超連接處理,返回超連接內容)=圖片加載參數(非空,用於加載圖片的參數,如路徑)]
使用方式: [0x01(默認)##顏色值(可空,表示下劃線顏色,默認字體顏色)#超連接內容(非空,點擊超連接後的回調)=顯示內容(非空,超連接顯示的內容)]
使用方式,使用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