• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

이벤트 디스패처와 델리게이트에 관한 질문

23.08.07 02:48 작성 23.08.07 02:59 수정 조회수 465

2

마지막 강의인 이벤트 디스패처 부분까지 수강했습니다.

좋은 강의 제공해 주셔서 감사합니다.

다름이 아니라 언리얼 엔진에서의 함수와 이벤트, 델리게이트를 제가 추상적이게나마 맞게 이해한 것인가 궁금하여 글 남겨봅니다.


1. 함수

- 함수는 기존 C나 C++언어에서와 같이 반환값, 함수명, 매개변수가 있다.

- 클래스 안의 멤버 함수(메서드)라면 접근 제어 지시자를 통해 외부에서의 접근을 제어할 수 있다.

- 함수는 호출되면 딜레이를 시킬 수 없고 즉시 모든 로직을 실행하고 적절한 값을 반환한다.


2. 이벤트

- 함수와 유사하지만 실행 과정에서 딜레이를 시킬 수 있다.

- 이벤트(함수포인터)를 델리게이트에 추가?(등록)하여 여러 이벤트들을 동시에 병렬로 실행할 수 있다.


3. 델리게이트

- 이벤트(함수)의 함수 포인터를 저장하여 관리(추가, 삭제, 호출, 등)할 수 있는 어떤 자료 구조가 있다.

- 등록된 이벤트들을 차례대로 각각 일정 시간동안 실행(병렬)한다.

- 블루프린트 클래스의 이벤트 그래프에서 생성한 이벤트들은 모두 델리게이트에 추가(등록) 되어 관리 된다.


4. 바인딩과 언바인딩

- 이벤트 디스패처에 의해 바인딩 된 이벤트는 델리게이트에 추가된다.

- 언바인딩된 이벤트는 델리게이트에서 삭제된다.


5. 마지막 수업 내용 중 이벤트와 델리게이트 부분에 대한 정리

Begin Play.png

  • Slimes 배열을 순회하며 각 BP_Slime 클래스의 OnArrivedEvent 커스텀 이벤트를 델리게이트에 추가(총 4개 등록)한다. -> 이게 바인딩인가?

     

  • 델리게이트에 등록된 모종의 이벤트에서 내부적으로 현재 레벨에 콜리전이 있는 모든 액터들의 위치 정보를 실시간으로 확인한다.

    ActorBeginOverlap.png위치가 겹치는 액터(클래스)가 있다면 해당 액터(클래스)의 ActorBeginOverlap 이벤트를 델리게이트에 추가(등록)한다.

     

  • 등록된 ActorBeginOverlap 이벤트 안에서 OnArrived 함수(이벤트 디스패처)를 호출한다.

     

  • OnArrived 함수(이벤트 디스패처) 안에서 바인딩 된 (델리게이트에 등록된) OnArrivedEvent 커스텀 이벤트를 호출(실행)한다.

    -> 그럼 각 BP_Slime 클래스는 이벤트 디스스패처와 바인딩되어 델리게이트에 등록된 커스텀 이벤트의 함수 포인터나 호출할 수 있는 어떤 정보를 갖고 있는 것인가?

     

  • OnArrivedEvent 커스텀 이벤트(함수 포인터)를 델리게이트에서 삭제한다. -> 이게 언바인딩인가?

 

답변 1

답변을 작성해보세요.

1

네 잘 정리되었습니다.

김기범님의 프로필

김기범

질문자

2023.08.07

감사합니다! 다음 파트로 넘어가서 수강하도록 하겠습니다. 😄