图文混排、超连接、下划线的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