1、TextMeshPro
组件直接支持定义emoji和图文混排
优点:
TMP字体的优点(文字干净,渲染效果不受分辨率影响,描边、外发光等文字效果容易实现且性能很好)
不用单独开发,简单易用
缺点:
TMP字体的缺点(离线生成,字符限制,圆角)
目前还有不能支持动画(帧动画和Animation),也不太容易扩展
现在的版本生成的字体库实在太大了,比较全的汉字字库生成TextMeshPro需要的字库之后已经接近17M,如果考虑到游戏中存在2种字体,估计会超过20M的常驻内存在移动端,这个至少现在还很难接受。
文字是序列化,20M的序列化数据,移动端受IO限制,读取时间会有点长。
2、Shader实现
两张纹理(字体纹理和emoji纹理)根据当前顶点是属于文字 or 来选择采样,需要uv0和uv1两套uv,需要顶点数据传递一个标志来区分文字和
优点:
文本(字体相同)和可以在一个drawcall渲染
比较容易做帧动画
缺点:
与Outline、Shadow等组件不友好(对也应用了效果)(需要定制开发)
对所有UIBaseEffect子类都需要区分顶点是文本还是
无法对文本和单独做Animation
3、Text组件 + Image组件 + Layout
用Text组件和Image组件组合,用Layout来控制组件位置
优点:
简单粗暴,容易实现
容易做帧动画和Animation
Text和Image都是UGUI,和其他UI容易合并drawcall
缺点:
会生成很多组件,在配合List滑动等功能时,可能会导致GC的问题(可用对象池优化)
ui rebuild会非常严重,特别是有动画的情况下,layout也可能会一直持续rebuild
基于layout本身的规则,位置不好定制
4、Text组件 + Sprite组件 + Layout
用Text组件和Image组件组合,用Layout来控制组件位置
优点:
简单粗暴,容易实现
容易做帧动画和Animation
Sprite本身不是UGUI,不会引起UI的rebuild
缺点:
会生成很多组件,在配合List滑动等功能时,可能会导致GC的问题(可用对象池优化),rebuild也会有点问题。
Sprite脱离了UI,不能和UI合批,可动态合批。和UI有遮挡关系时,层级可能会增加drawcall
基于layout本身的规则,位置不好定制
5、Text组件 +
与3、4方案的不同是位置计算,在Text中遇到就留出"合适的空间",这样文本可用一个组件搞定。但位置计算比较麻烦一些。
6、Text组件的富文本
UGUI富文本有一个<quad/>标签,它可作为一个占位符号,在Unity底层会为<quad/>标签生成顶点数据(两个三角形),在上层根据标签所在位置拿到相应的顶点数据,把顶点信息转换到世界空间,然后在另一个组件中去渲染(取出的顶点数据本地空间-世界空间-本地空间),并设置好位置。
注意点:
Text组件没有自动换行时,富文本的标签不会生成顶点数据,有自动换行时,富文本标签会生成无用的顶点数据,两种情况下索引偏移不一样。
今天永强接着昨天的课程 再接着给玉田讲一个新东西,名字非常酷炫,叫《EventTrigger》他的名字啥意思玉田并不需要知道,可以粗暴的这样理解哈。给你举个简单的例子:就好比玉田干坏错事了,玉田的爹地赵四抬手就给玉田一个大嘴巴子,玉田被抽一巴掌后,就捂住脸。
这里的EventTrigger就是:赵四抬手抽玉田一大嘴巴子。
执行的Function就是:玉田捂脸。。。
好嘞!下面我们看看详细 *** 作:
这是我们上一节课的栗子。现在选中Hierarchy中的Image对象
然后在Inspector中选择最下端的AddComponent按钮!按他就对啦!
然后会蹦出来一个小框框,上面有个搜索栏。像你平时搜索“苍老师”一样,在搜索栏中输入“EventTrigger”,然后就显示EventTrigger组件
选中我用红框框起来的这个吊东西。
这时你的Inspector中会多了一个东西,如下图
没错,揍四他!
摁“Add New Event Type”按钮。
选择PointerEnter
点右下角的➕号,出现下图的样子
把Hierarchy中的Image拖到对相框里
然后按我下图的设置做。玉田你蹩BB,就按我说的做就对了!
这个意思是当画布渲染时,如果有PointerEnter事件时,Image的Alpha设置为05
下面我们再添加一个事件。当PointerExit事件发生时。Image的Alpha设置为1
好滴。玉田真棒!现在运行一下看看效果吧。嘤嘤嘤。。。
当鼠标悬停在上时,Image透明度变成05
当鼠标离开时,Image的透明度变成了1
好啦玉田,哥累了。你该回家吃饭了。
Html中特殊字符不被转义,可以使用预格式化标签。pre 是 Preformatted text(预格式化文本) 的缩写。使用此标签可以把代码中的空格和换行直接显示到页面上。例如HTML代码:
1
2
3
4
5
<pre>
if (xx > 5) {
print "比5大!\n";
}
</pre>
浏览器显示效果:if (xx > 5) {print "比5大!\n";}<textarea></textarea>之间包含有类似的这种转义字符的时候总会被解析,倒是可以把所有的"&"通过程序替换成"&",但是有些本来就是"&"的也会被转换,这就错了。如何让<textarea></textarea>之间包含的文本原封不动的显示出来呢?总结如下:解决方法有两种:第1种:
1
2
3
4
5
6
<body>
<textarea id='t' rows=20 cols=20></textarea>
<script>
documentgetElementById('t')innerText='a<&>';
</script>
以上就是关于UGUI-图文混排方案全部的内容,包括:UGUI-图文混排方案、UNITY UGUI Event Trigger、如何让UGUI支持转义字符等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)