我在Unity中实现了一个IDragHandler,我想要的不仅仅是当我触摸它时能够开始拖动对象,而且如果指针在向下从外部进入时也是如此。我的代码的核心:
public class Draggable : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler, IPointerEnterHandler
{
public void OnBeginDrag(PointerEventData eventData)
{
...
}
public void OnDrag(PointerEventData eventData)
{
...
}
public void OnEndDrag(PointerEventData eventData)
{
...
}
public void OnPointerEnter(PointerEventData eventData)
{
// TODO: Don't just check mouse, take touch into account!
if (Input.GetMouseButton(0))
{
this.OnBeginDrag(eventData);
}
}
}
所以,基本上,如果指针在指针进入对象时关闭,我想开始拖动它。但是,这段代码似乎错误地触发了该对象的EventSystem,因为当执行此代码时没有任何反应,我突然甚至无法正常拖动对象。
有没有办法从我缺少的C#脚本手动触发“OnBeginDrag”?
答案 0 :(得分:0)
我在创建自定义相机之前遇到过这个问题。问题是你的陈述" if(Input.GetMouseButton(0))"如果在触发事件之前按住鼠标按钮,则不会返回true。与我认为逻辑相反的是" if(Input.GetMouseButton(0))"并不意味着如果按住鼠标按钮,这意味着更像是在{stuff}然后{更多东西}时单击鼠标按钮。
你应该使用" Input.GetButton()"而不是" Input.GetButtonDown()"。 Input.GetButtonDown()仅对按下按钮的帧返回true。
http://answers.unity3d.com/questions/412117/do-something-while-key-is-pressed-and-held-down.html
你的问题有点不清楚。您是否已经在任何方面获得了完全可以使用的代码,或者只是在光标从外部进入时拖动一个对象,同时按下您想知道的鼠标按钮?