Event Dispatcher

2024. 12. 22. 11:44·내배캠/Unreal Engine
목차
  1. Event DisPatcher

Event DisPatcher

역할:

  • 객체 내부에서 특정 이벤트가 발생했을 때, 이를 외부에 알리는 시스템이다.
  • 객체 간의 상호작용을 캡슐화 하여, 이벤트를 발생시킨 객체가 해당 이벤트를 처리할 객체에 대해 알 필요가 없다.
  • 객체 간의 의존성을 줄이고 더 유연한 코드를 작성하는데 유용하다.

주의사항:

  • 구독된 객체가 파괴되거나 더 이상 필요하지 않으면 unbind해줘야한다. 그렇지 않으면 참조가 남아 메모리 누수가 발생할 수 있기 때문이다.
  • DisPatcher에 연결된 이벤트가 많을 경우에 성능 저하 가능성이 있다.
  • 블루프린트의 경우 이벤트 호출 흐름을 확인하기 쉽지만, 복잡해질수록 관리가 어려울 수 있다.

활용:

  • UI와 게임 로직 분리: UI 버튼 클릭 이벤트를 DisPatcher로 처리하면 게임 로직과 UI를 분리시킬 수 있다.
  • 전역 이벤트 시스템: 주요 게임 이벤트를 DisPatcher로 관리하면 중앙 집중식 제어가 가능하다.
  • 다중Bind: 하나의 이벤트에 여러 객체가 반응해야 할 때 유용하다.

레벨 블루프린트의 Event함수가 필요한 액터 클래스 블루프린트에서 Event DisPatcher를 추가해준다.

그리고 해당 Event가 필요한 곳에 노드를 연결해주었다.

 

 

레벨 블루프린트에서 Get All Actor Of Class 노드에서 호출한 액터 클래스를 Loop을 돌면서 액터 Iterator를 Array형태로 가져와 해당 액터의 DisPatcher에 Event를 Binding 해주었다. 이렇게 함으로써 액터클래스에서 DisPatcher를 호출하면 레벨블루프린트의 Event EndGame 함수가 동작하게 된다. 그리고 더 이상 DisPatcher가 필요 없기 때문에 UnBind해주었다.

 

 

 

* C++에서 디스패처 사용시

// 디스패처 선언
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnEventName);

class MYPROJECT_API AMyActor : public AActor
{
    GENERATED_BODY()

public:
    
    UPROPERTY(BlueprintAssignable, Category="Events")
    FOnEventName OnEventTriggered;
};





// 디스패처 호출
void AMyActor::TriggerEvent()
{
    OnEventTriggered.Broadcast();
}




// 디스패처 구독 및 처리
MyActorInstance->OnEventTriggered.AddDynamic(this, &ThisClass::MyEventHandlerFunction);




// 구독 해제
MyActorInstance->OnEventTriggered.RemoveDynamic(this, &ThisClass::MyEventHandlerFunction);

'내배캠 > Unreal Engine' 카테고리의 다른 글

Class 설계 연습(AI Enemy)  (0) 2025.01.08
TArray  (0) 2025.01.06
블루프린트로 레벨디자인 만들기  (1) 2024.12.22
월드 좌표계와 로컬 좌표계의 차이  (0) 2024.12.17
언리얼 에디터 인터페이스  (0) 2024.12.17
  1. Event DisPatcher
'내배캠/Unreal Engine' 카테고리의 다른 글
  • Class 설계 연습(AI Enemy)
  • TArray
  • 블루프린트로 레벨디자인 만들기
  • 월드 좌표계와 로컬 좌표계의 차이
동그래님
동그래님
  • 동그래님
    개발자 동그래
    동그래님
  • 전체
    오늘
    어제
    • 분류 전체보기 (210)
      • 공부 (51)
        • Code Cata (50)
      • 내배캠 (151)
        • TIL (50)
        • C++ (37)
        • Unreal Engine (48)
        • GAS(Gameplay Ability System.. (16)
      • Project (7)
        • Gunfire Paragon (5)
        • Arena Fighters (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    동그래님
    Event Dispatcher
    상단으로

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.