UE中GamePlay技能模块使用

大概研究了一个星期的技能模块功能。虽然还不是很多,但是也学习了不少。

Main

大概的一个依赖关系就是这样的,但是这些功能之间依旧可以项目去调用,从而实现更加复杂的功能。

官方文档文档中还对每个功能可以实现的功能进行了一定的说明,需要要的时候多看。

GamePlayAbility

授予和撤销技能

在Actor使用某项技能之前,必须向技能组件授予该技能

授予技能:GiveAbility/GiveAbilityAndAcitiveOnce 使用GamePlayAbilitySpec调用,返回FGameAbilitySpecHandle句柄

撤销技能:CleaeAbility/SetRemoveAbilityOnEnd/ClearAllAbilities 除了最后一个不需要通过GamePlayAbilitySpec来调用

基本用法

授予技能后,生命周期如下:

  1. 判断是否技能可用,CanActiveAbility
  2. 执行技能,CallActiveAbility
  3. 尝试执行,TryActiveAbility
  4. EndAbility

游戏属性FGamePlayAttribute

属性作为FGamePlayAttribute类型的Uproperty在UAttributeSet属性集中声明

属性集向技能系统进行注册,添加入拥有技能系统组件的Actor子对象或者将它传递给技能系统组件的GetOrCreateAttributeSubOject函数

游戏效果

更改属性方法,包括知识属性的底值进行更改、临时更改、随时间推移而应用的永久性更改(如在一定时间内或永久时间每秒回血)。设计为通过变量进行配置

技能任务UAbilityTask

他们在游戏性技能执行过程中执行异步工作,并通过调用委托(Delegate)或一个或多个输出执行引脚来影响执行流。

关于Spec

对于GamePlayAbility、GamePlayEffect在引擎中存在三个对象,CDO、Spec、Handle。

preview

posted @ 2022-03-17 10:43  LDnanchao  阅读(331)  评论(0编辑  收藏  举报