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】:
刚刚添加了接口IPointerDownHandler
和using UnityEngine.EventSystems
然后,我将方法更改为public
。
感谢@yes 提供答案
【讨论】:
以上是关于Unity 2D - OnMouseDown()不起作用的主要内容,如果未能解决你的问题,请参考以下文章
unity3d在android安卓中用啥代替pc上的OnMouseDown函数
为啥我的unity3d关联的vs2017里没有onmousedown函数?
unity3d里面的onMouseDown()函数,代表的是鼠标按键触发,但是在unity3d android中应该怎么写呢?