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齐的博客!