Unity 之 UGUI Text组件详解

Unity 之 UGUI Text组件详解

  • 1,属性面板
  • 2,代码操作
  • 3,使用实例
    • 1), 空格换行问题
    • 2), 逐字显示功能
    • 3), 相关功能推荐
  • 4,相关扩展
    • 1), 轮廓 (Outline)
    • 2), 阴影 (Shadow)
    • 3),UV1 位置 (Position as UV1)

文本_控件向用户显示非交互式文本。此控件可用于为其他 GUI 控件提供标题或标签,或显示说明或其他文本。

1,属性面板

  • Inspector属性面板:Unity 之 UGUI Text组件详解_第1张图片
属性名称 解释说明
Text 用于想要显示的文本 ;
Font 字体 ;
Font Style 文本样式 (斜体 , 加粗等) ;
Font Size 字体大小 ;
Line Spacing 文本行之间的间距 ;
Rich Text 富文本 ;( 白色 )
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), 空格换行问题

在实际使用过程中遇到这样一个问题,显示文字需要空格来标识分隔显示,而空格后面那句话太长了,导致一行显示不开,控件就会默认换行显示如下图:(这样显示起来难免会不美观)
修改前:
Unity 之 UGUI Text组件详解_第2张图片
修改后:
Unity 之 UGUI Text组件详解_第3张图片
修改逻辑使用"\u3000"1 字符来替换空格;(直接在组件上输入时,将输入法调成全角然后输入空格即可实现)

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), 逐字显示功能

Unity 之 UGUI Text组件详解_第4张图片
这是一个结合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 将图形颜色叠加到效果颜色上。

Unity 之 UGUI Text组件详解_第5张图片

2), 阴影 (Shadow)

属性 功能
Effect Color 阴影的颜色。。
Effect Distance 阴影的偏移(表示为矢量)。
Use Graphic Alpha 将图形颜色叠加到效果颜色上。

Unity 之 UGUI Text组件详解_第6张图片


结合渐变色的使用示例:

带有OutLine的效果:
Unity 之 UGUI Text组件详解_第7张图片

再加上Shadow效果:
Unity 之 UGUI Text组件详解_第8张图片

3),UV1 位置 (Position as UV1)

111

此组件为文本和图像图形添加简单的 UV1 位置效果。

把Canvas空间下的顶点坐标设置到UV1中,用于在Text和Image这样的图形组件中实现一些特效(特效要自定义shader实现)



  1. \u3000是全角空格的16进制Unicode编码。 ↩︎

你可能感兴趣的:(UGUI,组件详解,unity,UGUI,Text)