Unity 之 UGUI Text文本组件详解
- 1,属性面板
- 2,代码操作
- 3,使用实例
- 1), 空格换行问题
- 2), 逐字显示功能
- 3), 相关功能推荐
- 4,相关扩展
- 1), 轮廓 (Outline)
- 2), 阴影 (Shadow)
- 3), UV1 位置 (Position as UV1)
文本_控件向用户显示非交互式文本。此控件可用于为其他 GUI 控件提供标题或标签,或显示说明或其他文本。
1,属性面板
- Inspector属性面板:
属性名称 | 解释说明 |
Text | 用于想要显示的文本 ; |
Font | 字体 ; |
Font Style | 文本样式 (斜体 , 加粗等) ; |
Font Size | 字体大小 ; |
Line Spacing | 文本行之间的间距 ; |
Rich Text | 富文本 ;(<color = #ffffff > 白色 </color> )1 |
Alignment | 文本的水平和垂直的对齐方式 ; |
Alignment By Geometry | 使用字形几何形状的范围(而不是字形指标)执行水平对齐。 |
Horizontal Overflow | 水平溢出方式 ,用于处理文本太宽而无法放入矩形内的情况的方法。 |
Vertical Overflow | 垂直溢出方式 ; |
Best Fit | 根据矩形大小来自动调整文本大小 ;(忽略字体大小) |
Color | 文本颜色 ; |
Material | 渲染文本的材质 ; |
Raycast Target | 是否可以被射线检测到 ;. |
2,代码操作
上面Inspector属性均可在代码中进行设置:
public void SetTextStyle()
{
#region ------ 【Charater】 ------
//字体大小
TiShi.fontSize = 15;
//文字格式正常,斜体,粗斜,加粗
TiShi.fontStyle = FontStyle.Normal;//.Italic.BoldAndItalic.Bold;
//行间距
TiShi.lineSpacing = 1.2f;
//是否支持富文本
TiShi.supportRichText = true;
#endregion
#region ------ 【Prargraph】 ------
//对齐方式 各种TextAnchor枚举对齐
TiShi.alignment = TextAnchor.LowerCenter;
//使用字形几何范围来执行水平对齐,而不是使用音质度量。
TiShi.alignByGeometry = false;
//水平竖直模式 ==》 Overflow:溢出模式【不考虑文本的width或者height的限制,显示全部文本内容】
//Wrap 或者 Truncate 在文本width或者height区域内显示,超出部分被隐藏【包括字体大小超出】
TiShi.horizontalOverflow = HorizontalWrapMode.Overflow;
TiShi.verticalOverflow = VerticalWrapMode.Truncate;
//应该允许文本自动调整大小。
TiShi.resizeTextForBestFit = true;
//设置 BestFit 为True后
//当前文本区域显示不开后,内容会自动缩小字号; 【忽略原字体大小】
TiShi.resizeTextMinSize = 15;
TiShi.resizeTextMaxSize = 30;
#endregion
//文本颜色 【有渐变色时,此属性不起作用】
TiShi.color = new Color32(0, 0, 0, 0);
//文本材质 path:是Resources下面材质目录
TiShi.material = Resources.Load("path", typeof(Material)) as Material;
//是否进行射线检测
TiShi.raycastTarget = false;
}
3,使用实例
1), 空格换行问题
在实际使用过程中遇到这样一个问题,显示文字需要空格来标识分隔显示,而空格后面那句话太长了,导致一行显示不开,控件就会默认换行显示如下图:(这样显示起来难免会不美观)
修改前:
修改后:
修改逻辑使用"\u3000"2
using UnityEngine;
using UnityEngine.UI;
public class SetTextSpace : MonoBehaviour {
private Text mText;
void Start () {
//获取Text组件
mText = this.GetComponent<Text>();
//您要显示文本内容
string temp_content = "这是一个测试遇到空格 后面显示不开自动换行的问题处理 Czhenya";
//处理空格
temp_content = temp_content.Replace(" ", "\u3000");
//或者字符串直接这样写
//string temp_content = "这是一个测试遇到空格\u3000后面显示不开自动换行的问题处理\u3000Czhenya";
//设置Text文字
mText.text = temp_content;
}
}
2), 逐字显示功能
这是一个结合DoTween插件写的一段逻辑:
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
public class ZhuZiText : MonoBehaviour {
private Text mText;
void Start () {
//获取Text组件
mText = this.GetComponent<Text>();
//您要显示文本内容
string temp_content = "这是一个测试遇到空格后面显示不开自动换行的问题处理Czhenya";
mText.DOText(temp_content, 6);
//带回调的方式
//mText.DOText(temp_content, 6).OnComplete(()=> {
// Debug.Log("逐字显示完成的回调");
//});
//添加Ease枚举中设定的缓动动画
//mText.DOText(temp_content, 6).SetEase(Ease.InBack).OnComplete(() => {
// Debug.Log("逐字显示完成的回调");
//});
}
}
3), 相关功能推荐
Text 文本渐变;Text 文本竖排显示文字;Text 增加下划线;Unity实现Text逐字显示;
4,相关扩展
1), 轮廓 (Outline)
属性 | 功能 |
Effect Color | 轮廓的颜色。 |
Effect Distance | 轮廓效果在水平和垂直方向的距离。 |
Use Graphic Alpha | 将图形颜色叠加到效果颜色上。 |
2), 阴影 (Shadow)
属性 | 功能 |
Effect Color | 阴影的颜色。。 |
Effect Distance | 阴影的偏移(表示为矢量)。 |
Use Graphic Alpha | 将图形颜色叠加到效果颜色上。 |
结合渐变色的使用示例:
带有OutLine的效果:
再加上Shadow效果:
3), UV1 位置 (Position as UV1)
此组件为文本和图像图形添加简单的 UV1 位置效果。
把Canvas空间下的顶点坐标设置到UV1中,用于在Text和Image这样的图形组件中实现一些特效(特效要自定义shader实现)