UI_Button에 ItemIcon이라는 이미지 하나와 UI_EventHandler.cs를 추가한다.
그리고 ItemIcon에도 UI_EventHandler.cs를 추가한다.
public class UI_EventHandler : MonoBehaviour, IBeginDragHandler, IDragHandler
{
public Action<PointerEventData> OnBeginDragHandler = null;
public Action<PointerEventData> OnDragHandler = null;
public void OnBeginDrag(PointerEventData eventData)
{
if (OnBeginDragHandler != null)
OnBeginDragHandler.Invoke(eventData);
}
public void OnDrag(PointerEventData eventData)
{
if (OnDragHandler != null)
OnDragHandler.Invoke(eventData);
}
}
인풋매니저에서 그랬듯 2개의 액션을 선언하였다.
OnBeginDrag와 OnDrag는 각각 IBeginDragHandler, IDragHandler를 상속했을때 구현해야 하는 함수이다.
void Start()
{
Bind<Image>(typeof(Images));
GameObject go = GetImage((int)Images.ItemIcon).gameObject;
UI_EventHandler evt = go.GetComponent<UI_EventHandler>();
evt.OnDragHandler += ((PointerEventData data) => { evt.gameObject.transform.position = data.position; });
}
이미지를 바인드해서 ItemIcon에 대응하는 GameObject를 불러온다.
이후 UI_EventHandler컴포넌트에 OnDragHandler 액션에 람다 함수를 추가한다.
이미지 드래그가 가능해졌다.