Есть код:
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
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Внимание! Это краткий перевод вопроса Implement dependency injection outside of Startupcs
Есть проектНачальство, спустя более 40к строк кода решило добавить логирование