U4S5L21——TMP_TextUtilities
U4S5L21——TMP_TextUtilities
本章代码关键字
| 1 | TMP_TextUtilities.FindIntersectingLink() //传入点击相关参数,获取点击的超链接索引 | 
TMP_TextUtilities
TMP_TextUtilities 是 TextMeshPro 中提供的一个实用工具类
包含多个常用方法,主要用于获取指定位置的文本信息
我们主要在点击文本时,利用该类来获取点击到的具体内容
注意!
为了检测准确,TMP_TextUtilities会配合上节课的TMP_TextEventHandler一起使用
因此需要在想要监听点击的文本上同时添加TMP_TextEventHandler脚本(实际上不需要)
TMP_TextUtilities类中的常用API
以下方法的参数基本一致,分别为:
- 参数一:要查找索引的 TMP 控件
- 参数二:点击事件的屏幕坐标
- 参数三:点击事件的摄像机(可不填,将会默认使用 UI 摄像机)
基于以上参数,这些方法最好配合 UGUI 的 IPointerClickHandler 接口使用,
使用方法详见:UG3L11——UI事件监听接口
- 
获取给定位置文本中的具体信息的方法 - 获取链接索引:int FindIntersectingLink(TMP_Text text, Vector3 position, Camera camera)
- 获取单词索引:int FindIntersectingWord(TMP_Text text, Vector3 position, Camera camera)
- 获取单字符索引:int FindIntersectingCharacter(TMP_Text text, Vector3 position, Camera camera)
- 获取行索引:int FindIntersectingLine(TMP_Text text, Vector3 position, Camera camera)
 
- 获取链接索引:
- 
获取离给定位置最新的文本中的具体信息的方法 - 获取链接索引:int FindNearestLink(TMP_Text text, Vector3 position, Camera camera)
- 获取单词索引:int FindNearestWord(TMP_Text text, Vector3 position, Camera camera)
- 获取单字符索引:int FindNearestCharacterOnLine (TMP_Text text, Vector3 position, Camera camera)
- 获取行索引:int FindNearestLine(TMP_Text text, Vector3 position, Camera camera)
 
- 获取链接索引:
更多API可见:Class TMP_TextUtilities | TextMeshPro | 4.0.0-pre.2 (unity3d.com)
上边的方法返回的都是索引值,如果没有获取到信息,返回的索引为 -1
利用获取到的索引可以在 TMP 文本控件中的 textInfo 属性中的如下属性来获取信息
- 
行信息: linkInfo
- 
单词信息: wordInfo
- 
字符信息: characterInfo
- 
行信息: lineInfo
- 
超链接信息: linkInfo(数组,通过索引器获取具体的超链接索引)- GetLinkText() 获取超链接显示文本
- GetLinkID() 获取超链接指向的链接
 
- 
使用示例(以超链接为例)
需要通过 IPointerClickHandler 接口声明 OnPointerClick 方法,
在 OnPointerClick 方法内获取点击的超链接消息
| 1 | public class linkClickTest : MonoBehaviour, IPointerClickHandler | 


依次点击得到输出:

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 文KRIFE齐的博客!
