해결된 질문
작성
·
693
·
수정됨
2
마지막 강의인 이벤트 디스패처 부분까지 수강했습니다.
좋은 강의 제공해 주셔서 감사합니다.
다름이 아니라 언리얼 엔진에서의 함수와 이벤트, 델리게이트를 제가 추상적이게나마 맞게 이해한 것인가 궁금하여 글 남겨봅니다.
1. 함수
- 함수는 기존 C나 C++언어에서와 같이 반환값, 함수명, 매개변수가 있다.
- 클래스 안의 멤버 함수(메서드)라면 접근 제어 지시자를 통해 외부에서의 접근을 제어할 수 있다.
- 함수는 호출되면 딜레이를 시킬 수 없고 즉시 모든 로직을 실행하고 적절한 값을 반환한다.
2. 이벤트
- 함수와 유사하지만 실행 과정에서 딜레이를 시킬 수 있다.
- 이벤트(함수포인터)를 델리게이트에 추가?(등록)하여 여러 이벤트들을 동시에 병렬로 실행할 수 있다.
3. 델리게이트
- 이벤트(함수)의 함수 포인터를 저장하여 관리(추가, 삭제, 호출, 등)할 수 있는 어떤 자료 구조가 있다.
- 등록된 이벤트들을 차례대로 각각 일정 시간동안 실행(병렬)한다.
- 블루프린트 클래스의 이벤트 그래프에서 생성한 이벤트들은 모두 델리게이트에 추가(등록) 되어 관리 된다.
4. 바인딩과 언바인딩
- 이벤트 디스패처에 의해 바인딩 된 이벤트는 델리게이트에 추가된다.
- 언바인딩된 이벤트는 델리게이트에서 삭제된다.
5. 마지막 수업 내용 중 이벤트와 델리게이트 부분에 대한 정리
Slimes 배열을 순회하며 각 BP_Slime 클래스의 OnArrivedEvent 커스텀 이벤트를 델리게이트에 추가(총 4개 등록)한다. -> 이게 바인딩인가?
델리게이트에 등록된 모종의 이벤트에서 내부적으로 현재 레벨에 콜리전이 있는 모든 액터들의 위치 정보를 실시간으로 확인한다.
위치가 겹치는 액터(클래스)가 있다면 해당 액터(클래스)의 ActorBeginOverlap 이벤트를 델리게이트에 추가(등록)한다.
등록된 ActorBeginOverlap 이벤트 안에서 OnArrived 함수(이벤트 디스패처)를 호출한다.
OnArrived 함수(이벤트 디스패처) 안에서 바인딩 된 (델리게이트에 등록된) OnArrivedEvent 커스텀 이벤트를 호출(실행)한다.
-> 그럼 각 BP_Slime 클래스는 이벤트 디스스패처와 바인딩되어 델리게이트에 등록된 커스텀 이벤트의 함수 포인터나 호출할 수 있는 어떤 정보를 갖고 있는 것인가?
OnArrivedEvent 커스텀 이벤트(함수 포인터)를 델리게이트에서 삭제한다. -> 이게 언바인딩인가?
감사합니다! 다음 파트로 넘어가서 수강하도록 하겠습니다. 😄