1.创建GA类:


2.在角色基类增加一个函数,用于应用技能
/*
* 角色能力
*/
#pragma region Abilities
protected:
void AddCharacterAbilities();
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="CC|Abilities")
TArray<TSubclassOf<UGameplayAbility>> StartupAbilities; //初始能力
#pragma endregion
void ACC_CharacterBase::AddCharacterAbilities()
{
if (CC_AbilitySystemComponent == nullptr)
{
CC_AbilitySystemComponent = CastChecked<UCC_AbilitySystemComponent>(AbilitySystemComponent);
}
CC_AbilitySystemComponent->AddCharacterAbilities(StartupAbilities);
}
3.能力系统组件类添加函数:
/*
* 角色能力
*/
#pragma region Abilities
public:
void AddCharacterAbilities(const TArray<TSubclassOf<UGameplayAbility>>& StartupAbilities);
#pragma endregion
void UCC_AbilitySystemComponent::AddCharacterAbilities(const TArray<TSubclassOf<UGameplayAbility>>& StartupAbilities)
{
for (const TSubclassOf<UGameplayAbility>& AbilityClass : StartupAbilities)
{
FGameplayAbilitySpec AbilitySpec = FGameplayAbilitySpec(AbilityClass, 1);
GiveAbilityAndActivateOnce(AbilitySpec);
}
}
4.服务器初始化能力系统组件时调用方法:
Source/CC_Aura/Private/Characters/CC_HeroCharacter.cpp
void ACC_HeroCharacter::PossessedBy(AController* NewController)
{
Super::PossessedBy(NewController);
//服务器端初始化ASC
InitCharacterASC();
AddCharacterAbilities(); //添加能力
}
5.蓝图创建能力类:



6.角色添加能力:

测试:



被折叠的 条评论
为什么被折叠?



