单击时,Unity突出显示TextMeshPro元素中的单词



我正在制作一个基于文本场景的游戏,我想为用户提供点击单词并在文本场景中突出显示单词的选项,但我不知道如何做到这一点。

我在文本场景中添加了链接,然后使用OnPointerClick方法通过编辑文本并添加<mark=#somecolorcode>来突出显示场景的相应部分。然而,这意味着在<mark>标记中进行硬编码,当尝试突出显示多个单词时,它不起作用。

所以假设我有一个示例文本:;这是<link=some><链接=测试>测试";。

public class ClickText : MonoBehaviour, IPointerClickHandler
{
public void OnPointerClick(PointerEventData eventData)
{
var text = GetComponent<TextMeshProUGUI>();
if(eventData.button == PointerEventData.InputButton.Left)
{
int linkIndex = TMP_TextUtilities.FindIntersectingLink(text, Input.mousePosition,null);
if(linkIndex > -1)//check actually clicked on something we want clicked
{
var linkInfo = text.textInfo.linkInfo[linkIndex];
var linkId = linkInfo.GetLinkID();
if (linkId == "some") //highlight word some
{ 
text.text = "This is <link=some><mark=#FF00FF80>some</mark></link> 
sample text for <link=testing>testing</link>";
}
if (linkId == "testing") //highlight word testing
{ 
text.text = "This is <link=some>some</mark></link> sample text 
for <link=testing><mark=#FF00FF80>testing</mark></link>";
}
}
}
}
}

如果用户点击一些然后进行测试,那么由于硬编码,一些将被取消高亮显示,有没有一种方法可以在不重写整个内容的情况下将代码插入到TextMeshPro元素中,或者有没有其他方法可以实现我试图实现的目标?

也许你需要这个。TextMesh Pro-字符高亮

最新更新