Есть код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class DragAndDropGame : MonoBehaviour, IBeginDragHandler, IDragHandler
{
Camera MainCamera;
void Awake()
{
MainCamera = Camera.allCameras[0];
Debug.Log(MainCamera);
}
public void OnBeginDrag(PointerEventData eventData)
{
Debug.Log("OnBeginDrag");
}
public void OnDrag(PointerEventData eventData)
{
Vector3 newPos = MainCamera.ScreenToWorldPoint(eventData.position);
newPos.z = 0;
transform.position = newPos;
}
void OnMouseDown()
{
Debug.Log("OnMouseDown");
}
}
OnMouseDown отрабатывает, а реализации IBeginDragHandler, IDragHandler - нет. В чем может быть дело?
IBeginDragHandler, IDragHandler находятся в пространстве имён UnityEngine.EventSystems и используют для работы EventSystem. Если точнее, то эта система кидает рейкасты, собирает с точек попадания свои интерфейсы и производит вызов.
Метод же OnMouseDown принадлежит MonoBehaviour и реализуется просто через прокидывание рейкаста из всех камер.
Можете посмотреть, в UnityEngine.EventSystems так же присутствуют интерфейс IPointerDownHandler, который является аналогом OnMouseDown.
В вашем случае, если OnMouseDown работает, а интерфейсы нет, то на сцене отсутствует объект класс EventSystem. Нажмите ПКМ в иерархии и создайте его из меню UI->EventSystem
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости