自己做网站怎么弄,泰安市住房和城乡建设厅网站,27岁了想学网站建设,聊城正规网站建设公司电话文章目录 一、优化执行效率二、简单脉冲动画 一、优化执行效率
绑定事件需要每一帧检查绑定对象是否有变化#xff0c;势必造成CPU资源的浪费#xff0c;因此优化执行效率的思路是#xff1a;UI组件不再自行每帧查询血量#xff0c;而是让血量自己在发生变化的同时通知UI进… 文章目录 一、优化执行效率二、简单脉冲动画 一、优化执行效率
绑定事件需要每一帧检查绑定对象是否有变化势必造成CPU资源的浪费因此优化执行效率的思路是UI组件不再自行每帧查询血量而是让血量自己在发生变化的同时通知UI进行刷新。多播委托Multicast Delegate是一种特殊的委托类型它允许多个函数绑定到同一个委托实例当该委托被调用时会依次调用所有绑定的函数。这在需要通知多个对象或系统某个事件发生时非常有用。 参考链接https://dev.epicgames.com/documentation/zh-cn/unreal-engine/delegates-and-lamba-functions-in-unreal-engine?application_version5.2 1声明多播委托 SurAttributeComponent.h
#pragma once
#include CoreMinimal.h
#include Components/ActorComponent.h
#include SurAttributeComponent.generated.h// 发起者控件拥有者改变后的血量变化值
DECLARE_DYNAMIC_MULTICAST_DELEGATE_FourParams(FOnHealthChanged, AActor*, InstigatorActor, USurAttributeComponent*, OwningComp, float, NewHealth, float, Delta);UCLASS( ClassGroup(Custom), meta(BlueprintSpawnableComponent) )
class SURKEAUE_API USurAttributeComponent : public UActorComponent
{GENERATED_BODY()protected:UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, CategoryAttributes)float Health;public:USurAttributeComponent();// 声明一个多播委托实例UPROPERTY(BlueprintAssignable)FOnHealthChanged OnHealthChanged;// 要触发的函数UFUNCTION(BlueprintCallable, CategoryAttributes)bool ApplyHealthChange(float Delta);}; 2触发多播委托 SurAttributeComponent.cpp
#include SurAttributeComponent.hUSurAttributeComponent::USurAttributeComponent()
{Health 100;
}bool USurAttributeComponent::ApplyHealthChange(float Delta)
{Health Delta;// 由多播实例触发多播委托通知所有绑定的函数OnHealthChanged.Broadcast(nullptr, this, Health, Delta);return true;
} 3绑定函数到多播委托 MyCharacter-OnTakeDamage.AddDynamic(this, AMyGameMode::OnCharacterTakeDamage);回到UE在Player的AttributeComp中添加刚刚编写的OnHealthChanged事件利用PrintString节点快速验证效果 现在需要把这个事件分配给相应的UI控件PlayerHealth_Widget即可绑定到血条进度条在·PlayerHealth_Widget·的事件图表中编写蓝图程序在“事件构造”一开始就将将玩家Pawn的AttributeComp绑定到OnHealthChanged事件上。在每次事件触发时计算当前血量与玩家默认血量的百分比并设置给进度条。此外我还顺便设置了文本块显示的内容并在设计器中取消了上一节实现的绑定函数。如果在蓝图中找不到文本框变量记得在设计器中把相应控件前的Is Variable打开。
二、简单脉冲动画
此这部分通过在UI中添加血量减少时的脉冲动画来了解UMG中动画的使用在左下角的“动画”中点击“添加动画”命名为PulseHealthAnim点击动画并选择旁边的“时间轴”。选择显示血量数字的文本块在细节中下滑找到“渲染变换”将缩放添加为关键帧。将时间轴拖拽到0.75添加关键帧在0.25处将缩放的XY设置为0.5再次添加关键帧。此时拖动时间轴或者按下空格键就可预览到这个简易的脉冲动画。切换切换到蓝图中添加播放动画的节点。在刚才设置关键帧的时候更改了文本缩放的默认值此时需要回到设计器中点击黄色返回键将文本的缩放变为默认值 参考链接 https://dev.epicgames.com/documentation/zh-cn/unreal-engine/animating-umg-widgets-in-unreal-engine?application_version5.2