0%
设置
editor 设置
- 插件启用Gameplay Abilities和GameplayTagsEditor
Native代码设置
- 要使用此系统的全部功能,添加"GameplayAbilities"、“GameplayTags"和"GameplayTasks"到项目的”(ProjectName).Build.cs"文件中的 PublicDependencyModuleNames 中。
- 继承实现一个
UAttributeSet
作为属性集
- 继承自
ACharacter
或APown
之类的角色文件要同样继承接口IAbilitySystemInterface
并添加组件UAbilitySysrtemComponent
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #include "AbilitySystemInterface.h" #include "AbilitySystemComponent.h"
UCLASS() class TERRAWANDER_API ACharacterBase : public ACharacter, public IAbilitySystemInterface { ...
public: ... virtual UAbilitySystemComponent* GetAbilitySystemComponent()const; ...
protected: ... UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = BaseCharacter) UAbilitySystemComponent* AbilitySystemComp;
UPROPERTY() URPGAttributeSet* AttributeSet; ... }
|
调用流程
近战攻击例子
- 继承
ACharacter
的类中重写PossessedBy
中添加初始化技能的函数,当角色被控制器控制时,该函数会被调用
PossessedBy()
->AddStartupGameplayAbilities()
中演示使用GiveAbility()
添加技能并放回一个FGameplayAbilitySpecHandle
用于触发技能
- input绑定的输入触发使用技能的流程,
AbilitySystemComp->TryActivateAbility(meleeAbilitySpecHandle)
演示尝试使用一个技能
- 当
GameplayAbility
对象可以被激活时,进入ActivateAbility
事件
CommitAbility
将应用CD和消耗,PlayMontageandWait
将开始播放绑定动画片段
- Montage播放到一定帧的时候会触发动画通知,动画通知到对应的武器打开碰撞
- 当武器碰撞触发时将开始攻击判定流程
- 如果判定流程成功————碰撞到的是第一次碰到的敌人等等,制作
GamePlayEventData
并SentGamePlayEventtoActor()