В настоящее время я пытаюсь создать систему перетаскивания, в которой у меня есть перетаскиваемый объект пользовательского интерфейса, который я могу разместить на другом объекте. Но я не знаю, как я могу получить объект пользовательского интерфейса под мышью и перетаскиваемый объект пользовательского интерфейса.
Это код моего dragableObject:
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class DragHandeler : MonoBehaviour, IBeginDragHandler, IDragHandler,
IEndDragHandler
{
public Transform parentToReturnTo = null;
public Transform placeHolderParent = null;
public void OnBeginDrag(PointerEventData eventData)
{
parentToReturnTo = transform.parent;
}
public void OnDrag(PointerEventData eventData)
{
transform.position = eventData.position;
}
public void OnEndDrag(PointerEventData eventData)
{
transform.position = parentToReturnTo.position;
}
}
и этот код для моего заполнителя:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class PlaceHolder : MonoBehaviour, IDropHandler,
IPointerEnterHandler, IPointerExitHandler
{
public void OnPointerEnter(PointerEventData eventData)
{
Transform test = eventData.pointerDrag.GetComponent<Transform>();
Debug.Log(test.name);
}
public void OnPointerExit(PointerEventData eventData)
{
}
public void OnDrop(PointerEventData eventData)
{
}
}
проблема в том, что функция OnPointerEnter вызывается не всегда, когда она должна быть, она вызывается только иногда, когда я нахожусь над объектом с помощью мыши.
Есть ли другой способ, как я могу получить текущий объект ниже перетаскиваемого объекта?