이번 포스트에서는 UI를 개선하고, Attribute의 변화 값에 대해 한번 알아보겠습니다.
1) UI 개선
이번에 개선할 UI는 다음과 같습니다.
위의 체력바와 같이 변화하는 수치를 미리 알려주는 불투명한 UI를 추가하도록 하겠습니다.
우선, 기존에 사용하던 체력바 블루프린트인 WBP_GlobeProgressBar에 UI를 추가합니다.
해당 UI의 이름은 ProgressBar_Ghost입니다.
그리고 해당 UI를 설정하는 함수 UpdateGhostGlobeBrush를 추가합니다.
구성은 다음과 같습니다.
그리고 Event Graph로 돌아와 기존의 PreConstruct에 UpdateGhostGlobeBrush를 연결합니다.
그리고 기존의 ProgressBar를 설정하던 함수 SetProgressBar를 수정하겠습니다.
또 함수, InterpGhostGlobe를 추가하겠습니다. 해당 함수는 GhostGlobe의 수치를 조정합니다.
조정된 수치를 실제 적용하는 함수 SetGhostProgressBarPercent를 추가합니다.
다시 Event Graph로 돌아와 다음의 구조를 맞춰주겠습니다.
새로운 커스텀 이벤트인 GlobePercentSet의 경우,
체력이나 마나가 변경되는 경우에 호출되어 GhostGlobe의 Percent를 변경합니다.
Tick 이벤트에서는 매 프레임마다 GhostGlobe를 조정하여, 실제 수치를 적용하게 됩니다.
이제 실제 실행 결과를 확인해보겠습니다.
체력이 감소하는 경우, 잘 감소되는 것을 확인할 수 있습니다.
2) Attribute 변화값 알아보기
기존의 AttributeSet의 함수 2개를 알아보겠습니다.
2 - 1) PreAttributeChange
해당 함수의 경우, GE에 의해 Attribute가 변경되기 이전에 변경 수치인 NewValue를 조정해주는 역할을 합니다.
따라서 NewValue에 의해 조정된 값이 Attribute에 적용됩니다.
2 - 2) PostGameplayEffectExecute
해당 함수는 GE가 Attribute에 새로운 수치를 적용한 이후에 호출합니다.
그런데, 만약 위의 코드에서 조건문이 포함된 로직을 지워버리게 되면
GE를 통해 Attribute에 새로운 값을 적용하기만 할 뿐 조정하지 못하게 되는 문제가 발생합니다.
따라서 위와 같이 PostGameplayEffectExecute에 조건문을 통해
GE가 변경을 수행한 Attribute 별로 조정을 수행하였습니다.
즉, 정리하면 적용할 값과 적용한 값 모두에게 클램핑을 사용한 것이라고 생각해주시면 됩니다.
'언리얼 > 게임 프로젝트' 카테고리의 다른 글
Lyra 클론코딩 - (9 - 3) Camera_03 (0) | 2025.01.18 |
---|---|
Lyra 클론코딩 - (9 - 2) Camera_02 (0) | 2025.01.17 |
다커 앤 다커 모작 - 4일차_아이템 #5 / 아이템 #6 (0) | 2025.01.16 |
다커 앤 다커 모작 - 3일차_모듈 이름 수정 및 애셋 이주 (0) | 2025.01.16 |
다커 앤 다커 모작 - 3일차_아이템 #4 (0) | 2025.01.15 |