Unity3D学习笔记(一):UGUI中为文本添加下划线,只需简单几行代码

在使用UGUI搭建UI界面时,有时需要对现有的文本内容(Text)添加下划线。

如果使用文本插件Text Mesh Pro,可以在Inspector界面直接设置。

也可以自己编写代码来生成简单的下划线。

不多说,上代码,具体思路参考代码的注释。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class TextUnderLine : MonoBehaviour
{
    //目标文本组件
    public Text targetText;

    // Start is called before the first frame update
    private void Start()
    {
        //创建下划线
        CreatUnderLine();
    }

    //方法,创建下划线
    private void CreatUnderLine()
    {
        //空引用直接返回
        if (targetText == null) return;

        //复制目标文本的属性
        Text underlineText = Instantiate(targetText) as Text;

        //设置下划线的父物体
        underlineText.transform.SetParent(targetText.transform);

        //获取RectTransform组件
        RectTransform underlineRT = underlineText.rectTransform;

        //设置下划线的位置
        underlineRT.anchoredPosition3D = Vector3.zero;
        underlineRT.anchorMax = Vector2.one;
        underlineRT.anchorMin = Vector2.zero;
        underlineRT.offsetMax = Vector2.zero;
        underlineRT.offsetMin = Vector2.zero;

        //设置下划线的缩放
        underlineRT.transform.localScale = Vector3.one;

        //设置下划线文本的初始值
        underlineText.text = "_";

        //单个下划线宽度
        float singleUnderlineWidth = underlineText.preferredWidth;

        //文本总宽度
        float targetTextWidth = targetText.preferredWidth;

        //计算需要多少个“_”字符
        int underlineCount = Mathf.RoundToInt(targetTextWidth / singleUnderlineWidth);

        //添加“_”字符
        for (int i = 0; i < underlineCount; i++)
        {
            underlineText.text += "_";
        }
    }
}

完成的效果如下:

在这里插入图片描述

注意事项

上面代码实现简单,但有局限性和不足之处:
1.该代码只适合为确定的文本添加下划线,如果在程序运行过程中,文本内容实时变动,此代码不适用。后续我会继续研究实现动态更新下划线的方法。
2. 如果要为文本组件TextA添加下划线,切记,脚本TextUnderLine一定不要添加到TextA游戏物体上,因为这样会造成逻辑上的死循环,创建出无数个下划线子物体。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wxblzzz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值