Unity3D_MMO - UI 자동화 (2)

k_hyun·2022년 10월 12일
0

Unity_MMO_Project

목록 보기
9/33

UI_Button


UI_Button에 ItemIcon이라는 이미지 하나와 UI_EventHandler.cs를 추가한다.

그리고 ItemIcon에도 UI_EventHandler.cs를 추가한다.

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를 상속했을때 구현해야 하는 함수이다.

UI_Button.cs

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 액션에 람다 함수를 추가한다.

실행 결과


이미지 드래그가 가능해졌다.

0개의 댓글