• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

UI 자동화 #4 부분에서 이해 안되는 부분 질문드립니다

20.07.26 11:56 작성 조회수 150

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

시슴님의 프로필

시슴

질문자

2020.07.26

아.. 이해됐습니다 답변감사합니다 

0

1.
Define.UIEvent type = Define.UIEvent.Click으로 기본값을 클릭으로 설정했기 때문에,
별도로 명시하지 않으면 클릭 상태로 간주하는 것입니다.
(사실 UI 이벤트의 대부분 상황은 클릭할 때 뭔가 일어나는 형태로 동작하죠)

2.
PointerEventData가 붙은 이유는 UI_EventHandler 클래스를 보시면 되는데
IPointerClickHandler, IDragHandler 등의 인터페이스가 PointerEventData 인자를 요구합니다.
그리고 PointerEventData에 들어가서 살펴보면
UI 인풋에 대한 정보 (클릭한 위치, 클릭한 방법 등)가 있는데
나중에라도 이 정보를 조회하고 싶을 수가 있으니,
콜백 함수에 전달하기 위해 pointerEventData를 OnButtonClicked 인자에도 추가해준 것입니다.

감사합니다!