11月11日 自定义Events,将自定义Events分配给UI,给UI添加动画 UE4斯坦福 学习笔记

本文介绍了如何在C++中定义自定义事件,如FOnHealthChanged,并将其应用于Unity的AttributeComponent蓝图中。通过蓝图事件,实现了生命值改变时触发UI的动画效果。此外,还展示了如何在游戏开始时获取Pawn,绑定事件到UI,并创建一个生命值UI动画,包括关键帧动画的设置和恢复。最后,文章提到了在角色死亡后减少健康值的蓝图实现。
摘要由CSDN通过智能技术生成

自定义Events

在AttributeComponent的.h头文件上加上代码

//自定义Event DECLARE_DYNAMIC_MULTICAST_DELEGATE_FourParams(FOnHealthChanged, AActor*, InstigatorActor, USAttributeComponent*, OwningComp, float, NewHealth, float, Delta); UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) ) class ACTIONROUGELIKE_API USAttributeComponent : public UActorComponent

在public内添加自定义函数FOnHealthChanged

//仅可与多播代表一起使用。在蓝图中公开分配的属性。 UPROPERTY(BlueprintAssignable) FOnHealthChanged OnHealthChanged;

最后在之前.cpp的ApplyHealthChange内添加

bool USAttributeComponent::ApplyHealthChange(float Delta) { Health += Delta; //当ApplyHealthChange执行的时候执行OnHealthChanged多播代表 OnHealthChanged.Broadcast(nullptr,this,Health,Delta); return true; }

效果图

在Attibute组件的蓝图右侧新增加了一个FOnHealthChanged的事件,并且在执行ApplyHealthChange的时候启用

将自定义Events分配给UI

回到昨天创建的生命值UI

编写蓝图事件

在开始游戏的时候获得Pawn,将Pawn转换为我们的SCharacter类,获得Attribute组件,将组件转换为Bind Event,添加为我们创建的事件,获得Progress Bar组件和我们的Attribute组件,获取组件下的默认Health变量,将NewHealth除以Health变量,最后设置百分比

给UI添加动画

首先在Window内将Animations窗口调整出来

在Text->RenderTransfrom->Transfrom->Scale下点击Add a keyframe

就将这个关键帧添加到了时间轴上

在时间轴内添加一个0.5秒先变大后回复原状的动画

最后在蓝图内添加

如果动画第0帧的默认值被修改了怎么办

将时间轴选择第0帧,然后在扳手图标处选择Restore即可

附加:桶爆炸后减少50点Health

蓝图

效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值