附加拖动处理程序

时间:2017-02-04 17:18:53

标签: c# unity3d unity5 drag

我试图创建一个OnDrag事件处理程序,我似乎无法让它工作。我一直在这里观看youtube教程:https://www.youtube.com/watch?v=uSnZuBhOA2U并按照他的说明步骤进行操作。但由于某些原因,当我调试时,我注意到Start()方法已运行,但OnDrag(PointerEventData eventData)OnPointerUp(PointerEventData eventData)OnPointerDown(PointerEventData eventData)永远不会被触发。

这是我的完整代码:

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections;

public class VirtualJoystick : MonoBehaviour, IDragHandler, IPointerUpHandler, IPointerDownHandler
{
    private Image bgImage;
    private Image joystickImage;
    private Vector3 inputVector;

    private void Start()
    {
        bgImage = GetComponent<Image>();
        joystickImage = transform.GetChild(0).GetComponent<Image>();
        Debug.Log("Test Started");
    }

    public void OnDrag(PointerEventData eventData)
    {
        Vector2 pos;
        if (RectTransformUtility.ScreenPointToLocalPointInRectangle(bgImage.rectTransform, eventData.position,
            eventData.pressEventCamera, out pos))
        {
            Debug.Log("Test Works");
        }
    }

    public void OnPointerUp(PointerEventData eventData)
    {
        OnDrag(eventData);
    }

    public void OnPointerDown(PointerEventData eventData)
    {

    }
}

1 个答案:

答案 0 :(得分:1)

它没有被解雇的原因是我在我的Hirearchy中缺少EventSystem。 youtube视频没有提到这一点。问题解决了。