UE5 C++ Widget练习 Button 和 ProgressBar创建血条

本文介绍了如何在UnrealEngine中使用C++创建一个继承自Widget的自定义用户界面组件MyUserWidget,包含Button组件和血量管理功能,并通过蓝图实现事件触发和动态加载。玩家控制器中展示了如何在开始游戏时加载并显示这个Widget。
摘要由CSDN通过智能技术生成

一.

1.C++创建一个继承Widget类的子类, 命名为MyUserWidget

2.加上Button 和 UserWidget的头文件

#include "CoreMinimal.h"
#include "Components/Button.h"
#include "Blueprint/UserWidget.h"
#include "MyUserWidget.generated.h"

3.声明两个按钮 组件,两个浮点数。每次按Start按钮,当前生命值就减一。和两个准备用来代理调用的函数Start,Quit。减少并更新生命值状态的函数UpdateLife。

并且重写Initialize函数,实现初始化。相当于Actor里个Begin()。

	UPROPERTY(meta = (BindWidget))
		UButton* ButtonStart;
	UPROPERTY(meta = (BindWidget))
		UButton* ButtonQuit;
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category = "MyHealth")
	//UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyTestDataTableStruct")
	float CurrentLife = 100.f;
	UPROPERTY(EditAnywhere,BlueprintReadWrite,Category = "MyHealth")
	float MaxLife = 100.f;
	void UpdateLife();

	virtual bool Initialize()override;
	UFUNCTION()
	void Start();
	UFUNCTION()
	void Quit();

4.使用Button里的,OnClicked 绑定代理。

bool UMyUserWidget::Initialize()
{
	if (!Super::Initialize())
	{
		return false;
	}
	//ButtonStart->OnClicked.AddDynamic(this,&MyUserWid);  //代理绑定
	ButtonStart->OnClicked.AddDynamic(this,&UMyUserWidget::Start);
	ButtonQuit->OnClicked.AddDynamic(this, &UMyUserWidget::Quit);
	return true;
}

5.代理时,按下按钮里的函数再套用减少血量的函数。

void UMyUserWidget::Start()
{
	UpdateLife();
	GEngine->AddOnScreenDebugMessage(-1,5.f,FColor::Red,TEXT("Start"));
}

void UMyUserWidget::Quit()
{
	GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Quit"));
}

二 蓝图里操作

1.创建一个Widget Blueprint。

2.加入三个组件,按钮组件需要和C++里命名一样。

3.将新建的UMG_Widget里的classsetting里的继承的父类,修改为MyUserWiget。这样C++里的逻辑就在这里了。

4.将ProgessBar里Percent,创建绑定的蓝图函数。

5.这里的C++声明过的参数可以直接访问到,计算现阶段血量的百分比,赋值给ProgressBar

6.在PlayerController里面,添加这个Widget。之前PlayerController里曾设置Pawn,并绑定相机。

官方文档:

C++里的写法如下:

新添加Blueprint/UserWidget.h的头文件

#include "MyPlayerController.h"
#include "MyPawn.h"
#include"Blueprint/UserWidget.h"

UClass指针 指向 动态加载LoadClass<UUserWidget>类(MyUserWidget),UserWidget指针 指向 用CreateWidget实例化UClass指向的类。并将它 AddToViewport。

void AMyPlayerController::BeginPlay()
{
	Super::BeginPlay();
	UClass* widgetClass = LoadClass<UUserWidget>(NULL,TEXT("/Script/UMGEditor.WidgetBlueprint'/Game/UMG_Widget.UMG_Widget_C'")); //动态加载
	UUserWidget* MyWidgetClss = nullptr;
	MyWidgetClss = CreateWidget<UUserWidget>(GetWorld(),widgetClass); //创建UUserWidget
	MyWidgetClss->AddToViewport();
}

7.效果如下:

点击

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在UE4中,导出人物动画有几个常用的方法。 第一个方法是使用FBX文件导出。首先,在3D建模软件(如Maya、Blender)中创建一个包含人物动画的模型,然后将其导出为FBX格式的文件。接下来,在UE4中创建一个新的角色蓝图,并将导入的人物模型添加到这个蓝图中。在动画编辑器中,选择人物的动画片段,并右键点击选择导出为FBX文件。在导出设置中,选择所需的设置,然后点击导出按钮即可生成FBX动画文件。 第二个方法是使用UE4内置的Sequencer导出。Sequencer是UE4中的一个可视化剧情编辑器,可以用于创建和编辑人物动画。首先,在角色蓝图中创建所需的动画序列,并在Sequencer中将动画序列添加到剧情中。然后,在Sequencer中选择要导出的动画序列,并通过右键菜单选择导出为FBX文件。在导出设置中,选择所需的设置,然后点击导出按钮即可导出动画。 第三个方法是使用UE4的Persona编辑器导出。Persona是UE4中的动画编辑器,可以用于创建和编辑人物动画。在角色蓝图中选择需要导出的动画片段,并打开Persona编辑器。在Persona编辑器中,选择要导出的骨骼动画,并通过右键菜单选择导出动画。在导出设置中,选择所需的设置,如动画格式、帧率等,然后点击导出按钮即可生成动画文件。 以上是几种常用的方法,用于在UE4中导出人物动画。根据不同的需求和工作流程,可以选择适合的方法来导出动画。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值