• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

Action 관련하여..

21.02.25 23:48 작성 조회수 219

0

안녕하세요!! 바쁘신 와중에 빠른 답변 항상 감사드립니다.

 사실 Part3. 강의의 InputManager에 대한 이해도를 높히고자 다시 이 부분으로 돌아왔는데요!

이 강의에서는 Action은 단지 인자와 반환형식이 모두 없는 Delegate라고 설명해 주시는데

실제 InputManager에서 Action을 사용하실때는

public Delegate void Action();은 이미 System상 선언되어있으니 생략하더라도

public Event Action KeyAction = null;

라는 Event 선언 없이 바로

 Action OnMouseClicked = null;

로 Event를 만든 후 여기에 구독 신청을 하더라구요!!

이건 어떻게 가능한 건가요???

System상 이미 public Event Action까지 선언되어 있는 건가요??

답변 4

·

답변을 작성해보세요.

3

아 그렇군요.
설명을 살짝 헷갈리게 한 것 같네요.
이벤트 방식이라는게 event 문법을 의미한게 아니라
콜백 방식을 의미한 것이었습니다.

delegate나 event 모두 동일하게 Observer 구현을 할 수 있습니다.

1

System상 이미 public Event Action까지 선언되어 있는 건가요??

-> 그렇지는 않고,
event를 붙이지 않고 Action만 사용하게 되면
event가 아닌 기본 delegate 문법을 사용하는 것입니다.
사실 event랑 delegate랑 거의 비슷한데
event가 조금 더 안전성을 강화한 버전이라고 보시면 되겠습니다.

0

김지수님의 프로필

김지수

질문자

2021.03.02

확실히 이해되었습니다!!

감사합니다!!

0

김지수님의 프로필

김지수

질문자

2021.03.01

아 그렇군요!!

사실 이 질문을 드린 이유는 Action delegate만으로 짜인 코드를 설명해주실 때 '이벤트를 발생시킨다' 라던지 '이벤트 방식의~'라는 설명을 자주 사용하셔서 개인적으로 혼란이 와서입니다ㅠㅠ

그렇다면 사실상 Event문법을 사용하진 않았고 Action delegate 만 사용한 Observe 패턴의 이벤트 방식인가요...??