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