Unreal
Unreal5 UI 요소 사용법
yoosorang
2025. 2. 10. 21:07
📌개요
언리얼 블루프린트 위젯 요소 사용법에 대해 정리하고자 한다.
📌프로그래스 바
C++로 바인딩할 경우 아래와 같다.
//.h
//전방 선언
class UWidgetComponent;
//헤더 내부
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI")
UWidgetComponent* OverheadHPWidget; //캐릭터에 부착할 위젯 컴포넌트
void UpdateOverheadHP(); //위젯을 업데이트해줄 함수
virtual float TakeDamage( //위젯 업데이트 함수를 부를 함수
float DamageAmount,
struct FDamageEvent const& DamageEvent,
class AController*
EventInstigator,
class AActor* DamageCauser
) override;
//.cpp
#include "Components/WidgetComponent.h"
#include "Components/ProgressBar.h"
//생성자에 넣을 부분
OverheadHPWidget = CreateDefaultSubobject<UWidgetComponent>(TEXT("OverheadHP Widget"));
OverheadHPWidget->SetupAttachment(GetMesh());
OverheadHPWidget->SetWidgetSpace(EWidgetSpace::Screen);
void ACEnemy::UpdateOverheadHP()
{
if (!OverheadHPWidget) return;
UUserWidget* OverheadHPWidgetInstance = OverheadHPWidget->GetUserWidgetObject();
if (!OverheadHPWidgetInstance) return;
if (UProgressBar* HPBar = Cast<UProgressBar>(OverheadHPWidgetInstance->GetWidgetFromName(TEXT("HP"))))
{
HPBar->SetPercent(GetHealth() / GetMaxHealth());
}
}
float ACEnemy::TakeDamage(float DamageAmount, FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser)
{
float TempDamageAmount = Super::TakeDamage(DamageAmount, DamageEvent, EventInstigator, DamageCauser);
UpdateOverheadHP(); //업데이트 함수 호출
return TempDamageAmount;
}