📌개요
언리얼 블루프린트 위젯 요소 사용법에 대해 정리하고자 한다.
📌프로그래스 바
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;
}
'Unreal' 카테고리의 다른 글
Unreal5 C++ Enum (0) | 2025.02.11 |
---|---|
Unreal5 3D 인터랙션 위젯 (0) | 2025.02.10 |
Unreal5 블루프린트 움직이는 장애물 액터 제작하기 (0) | 2025.02.09 |
Unreal5 블루프린트 캐릭터 만들기 (0) | 2025.02.09 |
Unreal5 블루프린트 열거형으로 가위바위보 게임 구현 (0) | 2025.02.09 |