附加拖动处理程序
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 视频没有提到这一点。问题已解决。
我正在尝试创建一个 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 视频没有提到这一点。问题已解决。