虚幻四Gameplay Ability System入门(3)-UI交互

这一篇的目的是实现生命值与UI的交互,即角色的Health发生改变后,UI的血条也会发生相应的改变。为了实现这个目的,我们需要有以下几个步骤:

  1. 初始化AttributeSet,之前角色的属性值是没有初始化的,是从0开始的
  2. 通过Delegate,将HealthAttribute和CharacterBase.cpp中的处理生命变化的函数bind在一起。
  3. 实现角色的生命值UI。

OK,进入正题。

初始化AttributeSet

我个人认为初始化Attributes的较好的方法有两种,一是通过Gameplay Effect,在角色蓝图中的BeginPlay初始化角色的属性值。二是通过datatable,在ability system component中初始化属性值。

首先尝试第一种方法。

新建一个Gameplay Effect命名为GE_AttributeDefault。Modifier设置如下,override Health,修改为100。
1.PNG

在beginplay中通过ApplyGameplayEffectToSelf赋初值。
2.PNG

然后是第二种方法。

第二种方法通过DataTable初始化属性集
5.png

结构选择AttributeMetaData
6.png

然后数据为
3.PNG

在角色蓝图中的Ability System Component设置里,将Attribute和DataTable添加上去。
4.PNG

修改一下之前的测试内容
7.PNG

开始游戏,攻击,可以看到角色的初始生命值变成100了。
8.PNG

通过Delegate通知生命值被修改

打开rider(感觉比VS好用多了)。在CharacterBase.h中添加delagte。然后建一个函数,负责Broadcast这个delegate。

DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnHealthChangeEvent, float, NewHealth);

UCLASS()
class GAS_LEARN_API ACharacterBase : public ACharacter, public IAbilitySystemInterface
{
	// ......
	// Attribute update function
	UPROPERTY(BlueprintAssignable, Category="Ability")
	FOnHealthChangeEvent HealthChangeEvent;
	
	void OnHealthAttributeChanged(const FOnAttributeChangeData& Data);
};

打开CharacterBase.cpp,实现function

void ACharacterBase::OnHealthAttributeChanged(const FOnAttributeChangeData& Data)
{
	HealthChangeEvent.Broadcast(Data.NewValue);
}

在BeginPlay中将OnHealthAttributeChanged function与AbilitySystem中的Attribute Bind。

// Called when the game starts or when spawned
void ACharacterBase::BeginPlay()
{
	Super::BeginPlay();

	if(AbilitySystem)
	{
		AbilitySystem->GetGameplayAttributeValueChangeDelegate(UAttributeSetBase::GetHealthAttribute())
		.AddUObject(this, &ACharacterBase::OnHealthAttributeChanged);
	}
}

实现Health的UI

新建Widget,命名为W_HealthUI,然后新建ProgressBar,命名为HealthBar,然后调整一下颜色和percent,可以弄成自己喜欢的粉红色。
9.PNG

然后新建Custom Event,用来修改HealthBar的Percent
10.PNG

然后打开角色蓝图,添加Widget Component
11.PNG

然后在BeginPlay中将Health Change的与自己的CustomEvent绑定,用来修改HealthUI中HealthBar的Percent
12.PNG

完成。

测试

运行游戏,对着假人攻击,可以看到扣血了,Health Attribute与UI的交互完成。
13.PNG

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
UE4中的Gameplay框架是一个强大的工具集,用于开发和实现游戏玩法和用户交互。该框架提供了许多功能和组件,以帮助游戏开发者快速构建出丰富、流畅的游戏体验。 UE4的Gameplay框架主要由以下几个方面组成: 1.输入系统:该系统可以处理各种输入设备的操作,如鼠标、键盘和游戏手柄。开发者可以轻松地设置和管理输入映射和按键绑定。此外,还提供了鼠标和手柄的即时响应和移动方向控制功能,使玩家能够自由操作游戏中的角色。 2.角色控制器:角色控制器是游戏玩家在游戏中扮演的角色,他们的控制是通过输入系统和蓝图来实现的。游戏玩家可以移动角色、执行动作、攻击敌人等。角色还可以通过动画系统实现自然的运动和交互。 3.人工智能:UE4的Gameplay框架提供了内置的人工智能系统,可以对NPC和敌人进行编程控制。开发者可以设置敌人的行为模式、路径寻找和攻击策略,让游戏中的敌人具有更真实和智能的表现。 4.物理模拟:UE4的Gameplay框架使用了物理引擎来实现真实的物理模拟效果,比如碰撞、重力和刚体运动等。这使开发者能够创建更真实和具有交互性的游戏世界,使玩家可以与环境进行互动。 总之,UE4的Gameplay框架提供了强大而灵活的工具,帮助开发者轻松地构建出丰富多样的游戏玩法和用户交互。无论是开发动作冒险游戏、射击游戏还是角色扮演游戏,该框架都能满足开发者的需求,并带来令人惊叹的游戏体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值