Не обнаруживает событие падения в unity3d - PullRequest
0 голосов
/ 26 марта 2019

Я делаю игру в unity3d, и мне нужно перетаскивать текстовые компоненты поверх других текстовых компонентов.

У меня есть холст с группой холстов. Внутри находятся две панели с Grid Layout Group . Я загружаю программно компонент (prefab), состоящий из Panel и Text, а затем добавляю его к его родителю. У меня есть 2 сценария, ItemDragHandler и TextDropHandler , после добавления этих двух обработчиков в мой префаб я получаю, что ItemDropHandler никогда не выполняет функцию OnDrop . Я использовал эти два сценария раньше, и они сработали. Я уже отключил raycast в моей группе холстов также программно.

public class TextDropHandler: MonoBehaviour, IDropHandler
{
    public void OnDrop(PointerEventData eventData)
    {
        Debug.Log("Drop detectado"); //never shown in the Unity Debug
        Texto txtDrag = ItemDragHandler.startParent.gameObject.GetComponent<SlotText>().texto;
        Texto txtDrop = transform.gameObject.GetComponentInParent<SlotText>().texto;

        DropTextTextContainer dttc = GetComponentInParent<DropTextTextContainer>();
        if (dttc.verify(txtDrag, txtDrop) && !dttc.showNextText())
        {
            //Destroy(transform.parent.gameObject);
            ItemDragHandler.destroyObject = true;     
        }
    }
}
public class ItemDragHandler : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
    public static GameObject itemBeingDragged;
    public static Transform startParent;


    public static bool destroyObject;

    Vector3 startPosition;


    public void OnBeginDrag(PointerEventData eventData)
    {
        Debug.Log("Drag ha comenzado");
        itemBeingDragged = gameObject;
        startPosition = transform.position;
        startParent = transform.parent;
        GetComponentInParent<CanvasGroup>().blocksRaycasts = false;
    }

    public void OnDrag(PointerEventData eventData)
    {
        transform.position = Input.mousePosition;
    }

    public void OnEndDrag(PointerEventData eventData)
    {
        Debug.Log("Drag finalizado");

        if (destroyObject)
        {
            Destroy(startParent.gameObject);
            destroyObject = false;
        }
        itemBeingDragged = null;
        startParent = null;
        if(transform.parent != startParent) { 
        transform.position = startPosition;
        }

        GetComponentInParent<CanvasGroup>().blocksRaycasts = true;
    }
}

Я ожидаю, что функция перетаскивания будет выполнена, когда я перетаскиваю объект в другой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...