- 개요
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의 블루 프린트로 캐스팅
- 세 번째 시퀀스 : 캐스팅한 OverlayWidgetController의 MessageWidgetRowDelegate 델리게이트 처리
- 브로드캐스트되면 MessageWidgetRowDelegate_Event 이벤트 실행
- 반환된 UIWidgetRow를 쪼개어 Message를 화면에 출력
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| RPG 게임의 능력치 - 1) Attribute를 초기화하는 방법 (0) | 2025.07.25 |
|---|---|
| GameplayTags - 최종) GameplayEffect의 Tag로 UI 띄우기 (0) | 2025.07.25 |
| GameplayTags - 2) GameplayEffect와 GameplayTag (0) | 2025.07.20 |
| GameplayTags - 1) GameplayTag와 GameplayTag의 생성 (0) | 2025.07.20 |
| GameplayEffect - 최종) AttributeSet의 변경 이전과 이후 핸들링 + 커브 테이블의 사용 (0) | 2025.07.18 |