Unity 2D - OnMouseDown()不起作用

4

当我点击我制作的UI图像时,“void OnMouseDown()”函数不起作用!

我尝试过以下方法:

  1. 将其放入画布中
  2. 重新导入资源
  3. 将z设置为-1
  4. 将盒子碰撞器设置为正确大小
  5. 将盒子碰撞器设置为3D而不是2D

但以上方法都没有成功,请帮助我!

我的脚本:

public class btnPlay : MonoBehaviour, IPointerDownHandler {

    Vector3 pos;

    // Update is called once per frame
    void Update () {
        pos = new Vector3 (Screen.width / 4.6f, Screen.height / 1.58f, -1f);
        transform.position = pos;
    }

    void OnPointerDown(PointerEventData p) {
        Debug.Log ("X");
        SceneManager.LoadScene ("Level");
    }
}

对于UI,它是OnPointerDown(PointerEventData)(实际上是新UI背后的EventSystem)。如果你的UI元素不提供开箱即用的OnPointerDown,则可以实现UnityEngine.EventSystems中找到的IPointerDownHandler接口(它真的很容易,只是听起来有点复杂)。 - yes
当我在Unity中添加接口时,出现了以下错误: “btnPlay”未实现接口成员“UnityEngine.EventSystems.IPointerDownHandler.OnPointerDown(UnityEngine.EventSystems.PointerEventData)”,而最佳实现候选者“btnPlay.OnPointerDown(UnityEngine.EventSystems.PointerEventData)”不是公共的。 btnPlay是脚本所附加到的gameObject。 - D4NieLDev
公开它。但如果它是一个按钮,为什么不使用按钮呢?它拥有所有的功能,你可以在检查器中直接分配目标。 - yes
谢谢,它帮了我很多! - D4NieLDev
1个回答

2

刚刚添加了接口IPointerDownHandlerusing UnityEngine.EventSystems,然后将方法更改为public。感谢@yes提供的答案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接