언리얼 엔진 - 게임 프로젝트/GAS 프레임워크 RPG 프로젝트

GameplayTags - 3) DataTable에 정의된 Tag 사용하기

monstro 2025. 7. 25. 14:39
728x90
반응형

- 개요

DataTable 애셋을 만들어 GameplayEffect에서 필요한 GameplayTag만을 사용한다

Data Table을 새롭게 정의하기 위해 TableRowBase 구조체를 상속받아 사용한다

TableRowBase데이터 테이블에서의 행을 의미하는 구조체해당 구조체를 상속받아 사용하여

Data Table 에셋저장할 사용자 정의 데이터 구조체를 쉽게 제작할 수 있다

 

1) OverlayWidgetController 클래스 헤더 파일

 

TableRowBase를 상속받은 UIWidgetRow 구조체를 생성한다

해당 구조체의 어트리뷰트는 다음과 같이 구성하였다

  • MessageTag : GameplayEffect 중에서 UI에 영향을 줄 GE갖고 있어야 하는 Tag
  • Message : MessageTag를 지닌 GameplayEffect에 대한 설명
  • MessageWidget : 발동한 GameplayEffect위젯(추후 추가)
  • Image : GameplayEffect를 지닌 Actor의 사진

 

 

새롭게 MessageWidgetRowSignature 델리게이트를 추가한다

해당 델리게이트는 UIWidgetRow 구조체를 인자로 받아정보를 추출하여 브로드캐스트하는 용도로 사용한다

 

 

생성한 MessageWidgetRowSignature 델리게이트멤버 변수로 추가하였다

 

 

UIWidgetRow를 기반으로 생성한 Data Table 애셋을 멤버 변수로 추가하였다

해당 Data Table 애셋에서 Tag에 따른 행을 반환할 수 있도록 템플릿 함수를 추가하였다

 

 

GetDataTableRowByTag 함수템플릿 함수이므로 헤더 파일에서 정의한다

인자로 받은 Data Table에서 FindRow 함수를 사용하여 인자로 받은 Tag에 맞는 행을 가져온다

 

2) OverlayWidgetController 클래스 cpp 파일

 

BindCallbacksToDependencies 함수에서 기존의 GE가 적용된 이후수행하는 로직을 위와 같이 변경한다

우선, "Message"의 GameplayTag를 생성하고 적용된 GE의 Tag 중에서 부모가 Message인 Tag를 가져온다

이후 프로퍼티 MessageWidgetDataTable에서 찾은 Tag 일치하는 행을 가져온다

가져온 행MessageWidgetRowDelegate 델리게이트를 통해 브로드캐스트한다

 

3) 언리얼 에디터

 

UIWidgetRow상속받은 Data Table 애셋을 생성한다

 

 

OverlayWidgetController의 블루 프린트에 생성한 Data Table 애셋을 설정한다

 

시퀀스 첫 번째

 

시퀀스 세 번째

 

Overlay 위젯 블루 프린트WidgetControllerSet 함수시퀀스 노드를 추가하고 위 2개의 로직을 추가한다

  • 번째 시퀀스 : WidgetController 프로퍼티OverlayWidgetController의 블루 프린트로 캐스팅
  • 번째 시퀀스 : 캐스팅한 OverlayWidgetControllerMessageWidgetRowDelegate 델리게이트 처리
    • 브로드캐스트되면 MessageWidgetRowDelegate_Event 이벤트 실행
    • 반환된 UIWidgetRow쪼개Message를 화면에 출력

 

- 최종 실행 결과

 

728x90
반응형