Unity实现文本点击事件

文章介绍了在Unity3D中,利用TextMeshPro组件为一款类似传奇的手游开发聊天功能时,如何实现聊天文字的点击效果。通过TextMeshPro的OnPointerClick事件处理,可以方便地检测并响应用户对文本的点击,进而跳转到相应页面或执行特定事件。示例代码简化自TextMeshProExample12,仅展示了基础的文本点击功能,实际应用可能需要更复杂的数据处理和工具类支持。
摘要由CSDN通过智能技术生成

写在前面的一些碎碎念:
好久没有来写文章了,主要是这一两年找了一份不错的工作,进入了舒适区,工作上的功能没有什么创新,都是以前做过的功能。这不,最近开发一款类似传奇的手游,需要实现聊天栏文字点击的效果,今天就来分享一下。
直接上代码,组件用的是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的案例,删除了一些不需要的功能,源码中还有鼠标移动上去的效果、点击文字效果改变等、因为我这里用不上,就不做展示了。另外,我这里只是做了最简单的演示,实际上点击展示装备等,肯定需要一些详细的数据,这可就需要做一个工具类去辅助,此处就不做展开了,此处主要展示如何实现文本点击。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值