创建HealthWidgetC++
在头文件声明两个变量,当前血量和最大血量
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyWidget")
float CurrentHealth=100.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyWidget")
float MaxHealth=100.0f;
创建HealthWidget蓝图,添加画布和进度条,
在进度条里的百分比创建绑定,用于设置血量百分比显示
然后在需要的人物的头上添加血条的地方,添加上头文件,我这里在自己创建的mycharacter里面添加
#include"Components/WidgetComponent.h"
#include"MyHealthWidget.h"
然后声明控件
UPROPERTY(EditAnywhere, BluePrintReadOnly, Category = "MySenceComponent")
UWidgetComponent* MyWidgetHealth;
在character.cpp文件中
MyWidgetHealth = CreateDefaultSubobject<UWidgetComponent>(TEXT("MyWidgetComponent"));
//放入根
MyWidgetHealth ->SetupAttachment(RootComponent);
//复制控件引用
static ConstructorHelpers::FClassFinder<UUserWidget>WidgetClass(TEXT("/Script/UMGEditor.WidgetBlueprint'/Game/UMG_Health.UMG_Health_C'"));
MyWidgetHealth->SetWidgetClass(WidgetClass.Class);
//给一个向上的100的值,用于设置渲染的位置
MyWidgetHealth->SetRelativeLocation(FVector(0,0,100));
//设置渲染方式,是渲染到屏幕还是世界中
MyWidgetHealth->SetWidgetSpace(EWidgetSpace:: Screen);
//设置绘制大小
MyWidgetHealth->SetDrawSize(FVector2D(300,20));
效果为: