해결된 질문
작성
·
208
0
안녕하세요
UI 자동화 #4 강의를 보다 이해가 안되는 부분이 있어 질문드립니다
UI 자동화 #4 강의 13:31초 쯤 보면
익스텐션 메소드를 이용해서 코드를 간략화 하셨습니다
간략화 한 코드를 보면
GetButton((int)Buttons.PointButton).gameObject.AddUIEvent(onButtonClicked);
라고 익스텐션 메소드를 이용해서 간략화 하셨는데
AddUIEvent 함수 정의 한 부분을 보면
public static void AddUIEvent(this gameObject go, Action<PointerEventData> action, Define.UIEvent type = Define.UIEvent.Click) 이라고 정의하셨습니다
여기서 이해가 안되는 부분은
1.
GetButton((int)Buttons.PointButton).gameObject.AddUIEven에서
AddUIEvent의 인자에 action과 Define.UIEvent가 들어가야 되는데
action인 onButtonClicked는 들어가있는데 왜 Define.UIEvent는 들어가지 않은 이유가 궁금합니다
2.
원래는 public void OnButtonClicked 함수에 입력받은 인자가 없었는데
강의에서 이유는 모르겠지만 하시고
onButtonClicked 함수에 pointerEventData 인자를 추가하셨는데
pointerEventData 인자를 추가 하신 이유가 궁금합니다
매번 자세한 답변 감사드립니다
답변 2
0
0
1.
Define.UIEvent type = Define.UIEvent.Click으로 기본값을 클릭으로 설정했기 때문에,
별도로 명시하지 않으면 클릭 상태로 간주하는 것입니다.
(사실 UI 이벤트의 대부분 상황은 클릭할 때 뭔가 일어나는 형태로 동작하죠)
2.
PointerEventData가 붙은 이유는 UI_EventHandler 클래스를 보시면 되는데
IPointerClickHandler, IDragHandler 등의 인터페이스가 PointerEventData 인자를 요구합니다.
그리고 PointerEventData에 들어가서 살펴보면
UI 인풋에 대한 정보 (클릭한 위치, 클릭한 방법 등)가 있는데
나중에라도 이 정보를 조회하고 싶을 수가 있으니,
콜백 함수에 전달하기 위해 pointerEventData를 OnButtonClicked 인자에도 추가해준 것입니다.
감사합니다!