Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等

时间:2023-03-09 19:55:14
Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等

本节及后面的内容将会探索更加有意思的内容,更加逼近实际的使用的内容。我们本节内容不难,讲的是释放Ability时的信息传递:

第一步:创建一个GA称为GA_AOE_BlindVengeance,复仇忌婚。

Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等

第二步:其中的逻辑如下:

Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等

知识点:其中的Avatar是指Target(受作用者)。

是不是有点熟悉,AbilityActorInfo是什么?我们翻到之前的代码,可以看到最重要的两个信息是此技能的释放者和技能的受作用者。

Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等

第三步:编译运行即可查看,证实了这些重要信息是可用的。

下一组实验介绍一些简单的内容,当做复习。

第4.1步:在复仇忌婚Ability中修改逻辑,并注意修改Cost,让我们来探索一下什么是Cost。

Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等

第4.2步:运行,然后查看:

Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等

这个小实验说明:

当提交(CommitAbility[或者CommitAbilityCost])时,Cost规定的GE将会施加在Owner上,也就是说,这里的“花费”是一个GE_Milk,所以人物就有了血量增加的效果。

下一组实验介绍Trigger:

第5.1步:创建一个新的Ability,称为:GA_Lieyanzhiniao2,并且有给人物加Buff的能力。

Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等

第5.2步:在复仇忌婚Abiilty中修改Trigger,如下,表示当Buff.Fire被增加时触发。

Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等

第5.3步:编译运行查看效果,发现当执行烈焰之鸟时,人物增加FireBuff,于是触发了复仇忌婚,在逻辑上是这样的。在时序上,则是先发生复仇忌婚,因为是加上了Buff之后再执行烈焰之鸟的激活逻辑,而此前复仇忌婚就被触发了。

Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等

再进行一组实验。

第6.1步:新建一个GA_Baoyanfenghuang2爆炎凤凰,需要Buff.Fire前提。

Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等

第6.2步:烈焰之鸟将会给character添加Buff.Fire,注意Ability没有DurationPolicy的概念,这个添加上去的Buff将会在EndAbility的时候废除,所以Delay为1表示在1秒以内持续这个Buff。

Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等

第6.3步:保持复仇忌婚(GA_AOE_BlindVengeance)的触发机制,同时加上延时逻辑。

Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等

运行查看结果:触发烈焰之鸟,然后看到复仇忌婚被激活,烈焰之鸟提供的firebuff失效(因为1秒钟过去了,你可以用爆炎凤凰来查看是否失去了firebuff),随后查看到复仇忌婚结束。

Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等

第6.4步【对照实验】:修改复仇忌婚的触发效果为OwnedTagPresent,再次实验,可以发现看不到“10s等待完毕”。总结:触发机制是“OwnedTagAdded”的,表示当Tag添加时触发事件;
“OwnedTagPresent”表示当Tag添加时触发,若激活期间(EndAbility之前),这个Tag被移除了,那么就被强制结束。

Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等

——小江村儿的文杰 zouwj5@qq.com 2017年7月20日20:31:27