Unity实现文本点击事件

写在前面的一些碎碎念:
好久没有来写文章了,主要是这一两年找了一份不错的工作,进入了舒适区,工作上的功能没有什么创新,都是以前做过的功能。这不,最近开发一款类似传奇的手游,需要实现聊天栏文字点击的效果,今天就来分享一下。
直接上代码,组件用的是TextMeshPro

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的案例,删除了一些不需要的功能,源码中还有鼠标移动上去的效果、点击文字效果改变等、因为我这里用不上,就不做展示了。另外,我这里只是做了最简单的演示,实际上点击展示装备等,肯定需要一些详细的数据,这可就需要做一个工具类去辅助,此处就不做展开了,此处主要展示如何实现文本点击。

猜你喜欢

转载自blog.csdn.net/qq_40629631/article/details/128869154
今日推荐