Unity - TextMeshPro 使用教程

一.准备字体(最好是免费的字体,如果有用到中文要找有中文的字体)

  • 一般在C:\Windows\Fonts下有windows有很多可以测试的字体,如:msyh.ttf

二.把msyh.ttf文件导入unity

  • 一般在unity的Assets下新建一个Fonts文件夹来存放msyh.ttf

三.打开unity的Font Asset Creator

  • 1>.点击菜单 windows -> TextMeshPro -> Font Asset Creator
  • 2>.如果是第一次打开会弹出TMP Importer框,点 Import TMP Essentials 即可,下面的 Import TMP Examples & Extras 不用点击
  • 3>.点击菜单 windows -> TextMeshPro -> Font Asset Creator打开Font Asset Creator 窗口
    – (1).Source Font File 拖入需要使用的字体(msyh.ttf)
    – (2).Character Set 选择预定义的字符集(Custom Characters)
    – (3).Custom Characters List 输入要显示的字符(全部显示的都输进去)
    – (4).点击Generate Font Atlas 按钮(可以看看按钮下的提示有没有错误)
    – (5).点击Save 按钮保存msyh SDF.asset文件(msyh SDF也可以定义别的名字)

四.创建unity的TextMeshPro对象

  • 在unity的Hierarchy右键菜单里 UI -> Text - TextMeshPro 即可创建(也可以右键菜单里3D Object -> Text - TextMeshPro创建)
  • 在对象的TextMeshPro - Text(UI)组件里(3D对象的是TextMeshPro - Text)
    – (1).在
    Text Input
    输入显示内容
    – (2).在Font Asset 点后面的 圆圈 后的下拉框里选刚刚保存的 msyh SDF.asset

五.最后在场景就可以看到效果了

六.其它的参数设置可以尝试调一下看看效果

七.可以给TextMeshPro对象挂下面的FlutterText脚本实现飘字效果

using TMPro;
using UnityEngine;

public class FlutterText : MonoBehaviour
{
    public float MoveSpeed = 3f;              //移动速度
    public float MoveSpeedDamping = 0.2f;     //移动速度阻尼
    public float ScaleIncreaseAddSpeed = 0.3f;//放大增速
    public float ScaleDecreaseAddSpeed = 0.3f;//缩小增速
    public float DisappearSpeed = 3;//透明速度
    public float MoveTime = 1;//移动时间
    public int LayerSortingOder = 10;//层级

    protected TextMeshPro mTextMeshPro;//记录TextMeshPro 对象
    protected float mPassTime;//记录时间
    protected float mMoveSpeed;//记录移动速度
    private Vector3 mMoveVector = new Vector3(0, 1);//记录移动向量

    private void Awake()
    {
        mTextMeshPro = GetComponent<TextMeshPro>();
        //
        mMoveSpeed = MoveSpeed;
        mTextMeshPro.sortingOrder = LayerSortingOder;
    }

    void Update()
    {
        // 偏移
        transform.position += mMoveVector * mMoveSpeed * Time.deltaTime;
        // 阻尼
        mMoveSpeed -= MoveSpeed * MoveSpeedDamping * Time.deltaTime;

        // 先变大,后缩小
        if (mPassTime < MoveTime * 0.5f)
        {
            transform.localScale += Vector3.one * ScaleIncreaseAddSpeed * Time.deltaTime;
        }
        else
        {
            transform.localScale -= Vector3.one * ScaleDecreaseAddSpeed * Time.deltaTime;
        }

        // 变透明直到消失
        if (mPassTime >= MoveTime)
        {
            Color textColor = mTextMeshPro.color;
            textColor.a -= DisappearSpeed * Time.deltaTime;
            mTextMeshPro.color = textColor;
            if (textColor.a < 0)
            {
                Destroy(gameObject);
            }
        }

        mPassTime += Time.deltaTime;
    }

    public void SetText(string text)
    {
        mTextMeshPro.text = text;
    }
    public TextMeshPro GetTextMeshPro()
    {
        return mTextMeshPro;
    }
    /// <summary>
    /// 静态显示飘字函数
    /// </summary>
    public static FlutterText ShowFlutterText(GameObject flutterTextPerfab, Vector3 showWorldPoint, string text)
    {
        GameObject t = Instantiate(flutterTextPerfab, showWorldPoint, Quaternion.identity);
        FlutterText flutterText = t.GetComponent<FlutterText>();
        flutterText.SetText(text);
        return flutterText;
    }
}

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值