Unity 之 UGUI Text文本组件详解

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

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

1,属性面板

  • Inspector属性面板:

Unity3D之调用WinRT组件 unity text组件_Text

属性名称

解释说明

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), 空格换行问题

在实际使用过程中遇到这样一个问题,显示文字需要空格来标识分隔显示,而空格后面那句话太长了,导致一行显示不开,控件就会默认换行显示如下图:(这样显示起来难免会不美观)

修改前:

Unity3D之调用WinRT组件 unity text组件_unity_02


修改后:

Unity3D之调用WinRT组件 unity text组件_Text_03


修改逻辑使用"\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), 逐字显示功能

Unity3D之调用WinRT组件 unity text组件_unity_04


这是一个结合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

将图形颜色叠加到效果颜色上。

Unity3D之调用WinRT组件 unity text组件_Text_05

2), 阴影 (Shadow)

属性

功能

Effect Color

阴影的颜色。。

Effect Distance

阴影的偏移(表示为矢量)。

Use Graphic Alpha

将图形颜色叠加到效果颜色上。

Unity3D之调用WinRT组件 unity text组件_UGUI Text_06


结合渐变色的使用示例:

带有OutLine的效果:

Unity3D之调用WinRT组件 unity text组件_Text_07

再加上Shadow效果:

Unity3D之调用WinRT组件 unity text组件_Text_08

3), UV1 位置 (Position as UV1)

Unity3D之调用WinRT组件 unity text组件_控件_09

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

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