附加拖动处理程序

Attaching a Drag Handler

我正在尝试创建一个 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)
    {

    }
}

它没有触发的原因是我的 Hirearchy 中缺少 EventSystem。 youtube 视频没有提到这一点。问题已解决。