【问题标题】:Text on canvas not clickable [duplicate]画布上的文本不可点击[重复]
【发布时间】:2021-09-08 16:18:01
【问题描述】:

我似乎在这方面找不到任何东西。有一些关于按钮和图像的答案,但这只是文本,所以没有太大帮助。

我的场景中有一个画布,其中包含具有文本组件 boxCollider2D 和实现 OnMouseDown() 的脚本的游戏对象。我似乎无法点击文本。如果我切换到场景视图,我什至看不到文本或其对撞机。

我需要添加什么才能让 Unity 重新点击文本?

非常感谢!

【问题讨论】:

  • 我不确定 box collider 是否适用于 UI 元素。您在场景中看不到它的原因是文本位于 Canvas 上的 UI 空间中。您最好使用 Graphics Raycast 或 IPointer 事件将按钮组件添加到父级,将其颜色设置为透明并将文本设置为子级。

标签: unity3d


【解决方案1】:

根据TEEBQNE的评论,如果您的对象在画布上,则需要使用其他方法,OnMouseDown() 将不起作用。

可以使用如下界面

using UnityEngine;
using UnityEngine.EventSystems;

public class TestScript : MonoBehaviour, IPointerClickHandler
{

    public void OnPointerClick(PointerEventData eventData)
    {
        if (eventData.pointerId == -1)
        {
            Debug.Log("Text clicked on canvas");
        }
    }

}

否则,如果需要,您还可以创建一个 3d 文本对象,而不是使用 OnMouseDown() 的 canvas 元素

请记住,这需要有一个碰撞器,最好将文本本身作为具有碰撞器的对象作为父对象

这样就可以调用了

private void OnMouseDown()
{
    Debug.Log("Text clicked in world");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    相关资源
    最近更新 更多