UGUI-图文混排方案

UGUI-图文混排方案,第1张

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支持转义字符等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9753936.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存