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()