写在前面的一些碎碎念:
好久没有来写文章了,主要是这一两年找了一份不错的工作,进入了舒适区,工作上的功能没有什么创新,都是以前做过的功能。这不,最近开发一款类似传奇的手游,需要实现聊天栏文字点击的效果,今天就来分享一下。
直接上代码,组件用的是TextMeshPro文章来源:https://www.toymoban.com/news/detail-549945.html
using UnityEngine;
using UnityEngine.EventSystems;
using TMPro;
public class TextClick : MonoBehaviour, IPointerClickHandler
{
private TextMeshProUGUI m_TextMeshPro;
private Canvas m_Canvas;
private Camera m_Camera;
void Awake()
{
m_TextMeshPro = gameObject.GetComponent<TextMeshProUGUI>();
m_Canvas = gameObject.GetComponentInParent<Canvas>();
// Get a reference to the camera if Canvas Render Mode is not ScreenSpace Overlay.
if (m_Canvas.renderMode == RenderMode.ScreenSpaceOverlay)
m_Camera = null;
else
m_Camera = m_Canvas.worldCamera;
}
public void OnPointerClick(PointerEventData eventData)
{
int linkIndex = TMP_TextUtilities.FindIntersectingLink(m_TextMeshPro, Input.mousePosition, m_Camera);
if (linkIndex != -1)
{
TMP_LinkInfo linkInfo = m_TextMeshPro.textInfo.linkInfo[linkIndex];
Debug.Log("当前的文本是" + linkInfo.GetLinkText());
}
}
}
非常简单,只要在OnPointerClick里填上你想点击要展示的页面(或者想执行的事件)就行,然后TextMeshPro Text组件中填入你想实现点击的文字就可以。
代码参考的是TextMeshPro Example 12的案例,删除了一些不需要的功能,源码中还有鼠标移动上去的效果、点击文字效果改变等、因为我这里用不上,就不做展示了。另外,我这里只是做了最简单的演示,实际上点击展示装备等,肯定需要一些详细的数据,这可就需要做一个工具类去辅助,此处就不做展开了,此处主要展示如何实现文本点击。文章来源地址https://www.toymoban.com/news/detail-549945.html
到了这里,关于Unity实现文本点击事件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!