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

自定义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的时候启用

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

将自定义Events分配给UI

回到昨天创建的生命值UI

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

编写蓝图事件

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

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

给UI添加动画

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

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

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

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

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

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

最后在蓝图内添加

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

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

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

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

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

蓝图

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

效果图

你可能感兴趣的:(UE5,斯坦福C++,上课记录,ue4,虚幻,学习,游戏引擎)