寫(xiě)在前面的一些碎碎念:
好久沒(méi)有來(lái)寫(xiě)文章了,主要是這一兩年找了一份不錯(cuò)的工作,進(jìn)入了舒適區(qū),工作上的功能沒(méi)有什么創(chuàng)新,都是以前做過(guò)的功能。這不,最近開(kāi)發(fā)一款類(lèi)似傳奇的手游,需要實(shí)現(xiàn)聊天欄文字點(diǎn)擊的效果,今天就來(lái)分享一下。
直接上代碼,組件用的是TextMeshPro文章來(lái)源:http://www.zghlxwxcb.cn/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("當(dāng)前的文本是" + linkInfo.GetLinkText());
}
}
}
非常簡(jiǎn)單,只要在OnPointerClick里填上你想點(diǎn)擊要展示的頁(yè)面(或者想執(zhí)行的事件)就行,然后TextMeshPro Text組件中填入你想實(shí)現(xiàn)點(diǎn)擊的文字就可以。
代碼參考的是TextMeshPro Example 12的案例,刪除了一些不需要的功能,源碼中還有鼠標(biāo)移動(dòng)上去的效果、點(diǎn)擊文字效果改變等、因?yàn)槲疫@里用不上,就不做展示了。另外,我這里只是做了最簡(jiǎn)單的演示,實(shí)際上點(diǎn)擊展示裝備等,肯定需要一些詳細(xì)的數(shù)據(jù),這可就需要做一個(gè)工具類(lèi)去輔助,此處就不做展開(kāi)了,此處主要展示如何實(shí)現(xiàn)文本點(diǎn)擊。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-549945.html
到了這里,關(guān)于Unity實(shí)現(xiàn)文本點(diǎn)擊事件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!