UE GAS TASK

GA里需要延迟触发需要使用task,虚幻自带了一些task函数,如果我们想自己实现某些功能需要自定义task。创建一个c++类,继承自UAbilityTask。

task类里需要有3个关键函数:一个静态函数,一个激活任务执行的函数,一个结束任务执行的函数。

	UFUNCTION(BlueprintCallable, Category = "Ability|Tasks", meta = (HidePin = "OwningAbility", DefaultToSelf = "OwningAbility", BlueprintInternalUseOnly = "TRUE"))
	static UAT_MyTask* myTask(
		UGameplayAbility* OwningAbility
	);//调用该task使用的函数,该函数至少需要UGameplayAbility*这个参数,可根据自己的需要添加更多参数。
	virtual void Activate() override;//task开始触发的函数
	virtual void OnDestroy(bool AbilityEnded) override;//task结束触发的函数

在头文件中声明委托,蓝图里调用需要动态多播委托,多播委托类需要以F开头,在GA里进行绑定函数,AT里发送信息执行委托。

DECLARE_DYNAMIC_MULTICAST_DELEGATE(FAbilityEnd);//全局范围声明

UPROPERTY(BlueprintAssignable)
FAbilityEnd AbilityEnd;//类里定义

cpp中实现功能:

UAT_MyTask* UAT_MyTask::myTask(UGameplayAbility* OwningAbility)
{
UAT_MyTask* theTask{ NewAbilityTask<UAT_MyTask>(OwningAbility) };//实例化
return theTask;
}

void UAT_MyTask::Activate()
{
AbilityEnd.Broadcast();//这里简单演示,任务开始后立即触发委托并结束。
EndTask();//使用该函数结束任务
}

void UAT_MyTask::OnDestroy(bool AbilityEnded)
{
}

GA调用该TASK

Task = UAT_MyTask::myTask(this);
Task->AbilityEnd.AddDynamic(this,&myAbility::TaskEnd);//绑定委托
Task->ReadyForActivation();//激活任务
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇