Unity 2D - OnMouseDown()不起作用

Posted

技术标签:

【中文标题】Unity 2D - OnMouseDown()不起作用【英文标题】:Unity 2D - OnMouseDown() not working 【发布时间】:2016-05-07 22:14:13 【问题描述】:

单击我制作的 UI 图像时,'void OnMouseDown()' 函数不起作用! 我尝试过的事情:

    列表项 把它放在画布上 重新导入资产 将 z 设置为 -1 设置合适尺寸的盒子碰撞器 设置盒子碰撞器 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");
    

【问题讨论】:

它的OnPointerDown(PointerEventData) 用于 UI(实际上是新 UI 背后的 EventSystem)。如果您的 UI 元素没有提供开箱即用的 OnPointerDown,您可以实现在 UnityEngine.EventSystems 中找到的 IPointerDownHandler 接口(它真的很简单,只是听起来很复杂) 当我添加接口时,我统一收到此错误:btnPlay' does not implement interface member UnityEngine.EventSystems.IPointerDownHandler.OnPointerDown(UnityEngine.EventSystems.PointerEventData)' 和最佳实现候选 `btnPlay .OnPointerDown(UnityEngine.EventSystems.PointerEventData)' in not public btnPlay 是脚本附加到的游戏对象 公开。但如果它是一个按钮,为什么不使用一个按钮?它具有您可以在检查器中分配目标的所有功能。 @yes 谢谢它的帮助! 【参考方案1】:

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

【讨论】:

以上是关于Unity 2D - OnMouseDown()不起作用的主要内容,如果未能解决你的问题,请参考以下文章

01_Unity事件函数OnMouseDown生效条件

unity3d在android安卓中用啥代替pc上的OnMouseDown函数

Unity事件函数OnMouseDown生效条件

为啥我的unity3d关联的vs2017里没有onmousedown函数?

unity3d里面的onMouseDown()函数,代表的是鼠标按键触发,但是在unity3d android中应该怎么写呢?

unity2d动画位置不在一起怎么调整