Unity实用技能-背景自适应文本
实用技能系列
- Unity实用技能-UI滑动条技能总结
- Unity实用技能-UI规范总结
- Unity实用技能-协作规范总结
- Unity实用技能-UI与粒子效果总结
- Unity实用技能-UI定位总结
文章目录
- 实用技能系列
- 前言
- 什么是背景自适应文本
- 怎么实现单一格式文本字的背景自适应?
- 怎么实现多种格式文本字的背景自适应?
- 总结
前言
本周接触了UI背景和文本适应相关的工作,记录一下
什么是背景自适应文本
顾名思义,就是让
文本在变化时,背景的宽和高也能变大变小
;比如文本变多时让文本始终处于背景的中间,这就需要背景的自适应
怎么实现单一格式文本字的背景自适应?
- 这种类型的比较简单,可以利用Unity的组件。如
VerticalLayoutGroup
经常用于背景宽度不变,只让高度随文本自适应的场景;另一个HorizontalLayoutGroup
和VerticalLayoutGroup使用场景则相反 - 还需要用到
Content Size Fitter
组件,将其挂在背景对象上,让子物体文本框能随着文本变化 - 对象层级上,由于要使用LayoutGroup相关组件,所以Text文本对象应该是Image对象的子对象
- 想要更加符合策划的意图去自适应,需要相当了解LayoutGroup相关组件
怎么实现多种格式文本字的背景自适应?
-
这种类型可以说是比较困难,主要还是因为
数字和汉字的占位不一样
,并且结合LayoutGroup的定制子物体特性,导致复杂度提高。比如策划配置了数字和汉字混合的文本,并且要求只有一行的时候文本居中,两行以上的时候文本居左,整体Image背景只上下扩展,整个背景中央还有一个按钮
-
工作中,经过多重实验,就发现光靠一个image对象根本无法完成,所以就
根据行数划分
,一行就使用第一个Image对象,另一个Image对象就负责二行以上的文本 -
具体操作就是利用
VerticalLayoutGroup定制子物体文本距离Image框上下左右的距离
,并且控制好子物体,勾选Control的Height和Width以及Expand的Height;Content Size Fitter使用Vertical Fit保证文本框自适应
第一种:即一行文本类型
第二种:即两行以上文本类型
-
可以看到,两张组件图的但是Padding.Right属性不同,本质上就是为了居中和居左的区分。居中需要让左右对称,居左需要考虑到具体文本长度,这里只是尽可能不露馅的做法,本质还是
没法解决数字和汉字混合后文本框一行的最后空白占位换行问题
总结
目前遇到的背景自适应文本问题就这样,希望以后能有解决数字和汉字混合背景自适应文本的更好的方案