Реализовать обратный вызов OnBeginDrag, OnDrag и т. Д. В Unity - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь реализовать контроллер камеры на сцене с помощью простого объекта куба.

У меня проблема с перехватом сенсорных событий на Android.

Какой самый простой способ сделать это?

Я пробовал это https://docs.unity3d.com/ScriptReference/EventSystems.EventTrigger.html

Это то, что я сделал до сих пор:

  • добавил raycaster на основную камеру
  • добавлен триггер событий на кубе
  • применил скрипт к кубу

    EventTrigger trigger = GetComponent<EventTrigger>();
    EventTrigger.Entry entry = new EventTrigger.Entry();
    entry.eventID = EventTriggerType.Drag;
    entry.callback.AddListener((data) => {
       OnDragDelegate((PointerEventData)data); 
    });
    trigger.triggers.Add(entry);
    ...
    public void OnDragDelegate(PointerEventData data)
    

1 Ответ

0 голосов
/ 13 января 2019

Я думаю, что самый простой способ - использовать интерфейсы DragHandler:

using UnityEngine.EventSystems;

public class Drag: MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
    public void OnBeginDrag(PointerEventData eventData)
    {
        print("OnBeginDrag");
    }

    public void OnDrag(PointerEventData eventData)
    {
        print("OnDrag");        
    }

    public void OnEndDrag(PointerEventData eventData)
    {
        print("OnEndDrag");        
    }
}

Таким образом, он не только работает в Android, но также вы можете проверить его в редакторе Unity.

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