我试图创建一个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)
{
}
}
答案 0 :(得分:1)
它没有被解雇的原因是我在我的Hirearchy中缺少EventSystem。 youtube视频没有提到这一点。问题解决了。