21.TMP_TextEventHandler

21.工具类-TMP_TextEventHandler


21.1 知识点

TMP_TextEventHandler 类的作用

TMP_TextEventHandler 是 TextMeshPro 中提供的一个交互工具类,主要用于处理用户与 TMP 文本之间的交互事件。
它的主要功能包括:

  • 监听并响应 TMP 文本中的特定区域或标签(如链接 <link> 和特定字符)的点击和鼠标悬停事件。
  • 支持对文本的某些部分进行交互式操作,适用于创建如超链接、工具提示、弹出信息等效果。

TMP_TextEventHandler 类的使用

TMP_TextEventHandler 提供的事件列表

  • 链接事件: onLinkSelection
    • 当用户悬停或点击超链接时触发。
  • 字符事件: onCharacterSelection
    • 当用户悬停或点击某个字符时触发。
  • 单词事件: onWordSelection
    • 当用户悬停或点击某个单词时触发。
  • 行事件: onLineSelection
    • 当用户悬停或点击某一行文本时触发。
  • 精灵图片事件: onSpriteSelection
    • 当用户悬停或点击某一精灵图片时触发。

TMP_TextEventHandler 示例代码

// 获取 TMP_TextEventHandler 组件实例
TMP_TextEventHandler tmpHandler = this.GetComponent<TMP_TextEventHandler>();

// 绑定事件监听器
tmpHandler.onLinkSelection.AddListener(MyLinkSelectionHandler);
tmpHandler.onWordSelection.AddListener(MyWordSelectionHandler);
tmpHandler.onLineSelection.AddListener(MyLineSelectionHandler);
tmpHandler.onSpriteSelection.AddListener(MySpriteSelectionHandler);
tmpHandler.onCharacterSelection.AddListener(MyCharSelectionHandler);

// 处理超链接事件
public void MyLinkSelectionHandler(string linkInfo, string linkText, int index)
{
    print("********** 超链接 *************");
    print(linkInfo);
    print(linkText);
    print(index);
}

// 处理字符事件
public void MyCharSelectionHandler(char charInfo, int i)
{
    print("********** 字符 *************");
    print(charInfo);
    print(i);
}

// 处理精灵图片事件
public void MySpriteSelectionHandler(char spirteInfo, int i)
{
    print("********** 精灵图片 *************");
    print(spirteInfo);
    print(i);
}

// 处理单词事件
public void MyWordSelectionHandler(string word, int i1, int i2)
{
    print("********** 单词 *************");
    print(word);
    print(i1);
    print(i2);
}

// 处理行事件
public void MyLineSelectionHandler(string lineInfo, int i1, int i2)
{
    print("********** 行 *************");
    print(lineInfo);
    print(i1);
    print(i2);
}


21.2 知识点代码

Lesson21_工具类_TMP_TextEventHandler.cs

using UnityEngine;
using TMPro;


public class Lesson21_工具类_TMP_TextEventHandler : MonoBehaviour
{
    void Start()
    {
        #region 知识点一 TMP_TextEventHandler类的作用

        //它是 TextMeshPro 中提供的一个交互工具类
        //主要用于处理用户和TMP文本之间的交互事件
        //主要作用是监听并响应 TMP 文本中的特定区域或标签(如链接 <link> 和特定字符)
        //的点击和鼠标悬停事件
        //这个类可以让你对文本的某些部分进行交互式操作,适用于创建如超链接、工具提示、弹出信息等效果

        #endregion

        #region 知识点二 TMP_TextEventHandler类的使用

        //  链接:onLinkSelection ―― 当用户悬停超链接时触发
        //  字符:onCharacterSelection ―― 当用户悬停某个字符时触发
        //  单词:onWordSelection ―― 当用户悬停某个单词时触发
        //  行:onLineSelection ―― 当用户悬停某一行文本时触发
        //  精灵图片:onSpriteSelection ―― 当用户悬停某一精灵图片时触发

        TMP_TextEventHandler tmpHandler = this.GetComponent<TMP_TextEventHandler>();
        tmpHandler.onLinkSelection.AddListener(MyLinkSelectionHandler);
        tmpHandler.onWordSelection.AddListener(MyWordSelectionHandler);
        tmpHandler.onLineSelection.AddListener(MyLineSelectionHandler);
        tmpHandler.onSpriteSelection.AddListener(MySpriteSelectionHandler);
        tmpHandler.onCharacterSelection.AddListener(MyCharSelectionHandler);

        #endregion
    }


    public void MyLinkSelectionHandler(string linkInfo, string linkText, int index)
    {
        print("**********超链接*************");
        print(linkInfo);
        print(linkText);
        print(index);
    }

    public void MyCharSelectionHandler(char charInfo, int i)
    {
        print("**********字符*************");
        print(charInfo);
        print(i);
    }

    public void MySpriteSelectionHandler(char spirteInfo, int i)
    {
        print("**********精灵图片*************");
        print(spirteInfo);
        print(i);
    }

    public void MyWordSelectionHandler(string word, int i1, int i2)
    {
        print("**********单词*************");
        print(word);
        print(i1);
        print(i2);
    }

    public void MyLineSelectionHandler(string lineInfo, int i1, int i2)
    {
        print("**********行*************");
        print(lineInfo);
        print(i1);
        print(i2);
    }
}

21.3 练习题

TMP_TextEventHandler类可以帮助我们完成什么样的功能?

  • 可以帮助我们制作
    • 聊天窗口中 鼠标悬停在某一装备名、玩家名、副本名等等文字上时
    • 动态创建对应的tip窗口,显示对应的装备信息、玩家信息、副本信息等等


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏