UE5/Gameplay Abilities
[UE5] GameplayAbility class 구현
Mini_96
2024. 6. 9. 01:35
* GameplayAbility 구현
c++ 클래스만들고 구현
캐릭베이스에 GA배열 넣어주기
private:
UPROPERTY(EditAnywhere, Category = "Attributes")
TArray<TSubclassOf<UGameplayAbility>> StartupAbilities;
ASC에 능력(Ability)를 부여 && 활성화하는 함수를 만듬
void UAuraAbilitySystemComponent::AddCharacterAbilities(const TArray<TSubclassOf<UGameplayAbility>>& StartupAbilities)
{
for(TSubclassOf<UGameplayAbility> AbilityClass : StartupAbilities)
{
FGameplayAbilitySpec AbilitySpec=FGameplayAbilitySpec(AbilityClass,1);
//GiveAbility(AbilitySpec);
GiveAbilityAndActivateOnce(AbilitySpec);
}
}
캐릭베이스에서 호출
void AAuraCharacterBase::AddCharacterAbilities()
{
UAuraAbilitySystemComponent* AuraASC = CastChecked<UAuraAbilitySystemComponent>(AbilitySystemComponent); //캐릭베이스는 ASC 가지고있음
if(!HasAuthority()) return;
AuraASC->AddCharacterAbilities(StartupAbilities);
//when call? 플레이어의경우 : 빙의될때
//적의경우 : ??
}
단, 호출시기(언제 능력을 부여할지)를 정해야함 // 플레이어의경우 : 빙의될때 가 적절함
void AAuraCharacter::PossessedBy(AController* NewController)
{
// 부모 클래스의 PossessedBy 함수 호출
Super::PossessedBy(NewController);
// 서버에서 능력 시스템 액터 정보를 초기화
//init ability actor info for server
InitAbilityActorInfo();
AddCharacterAbilities();
}
* BP에서 어빌리티 채워넣어야함!
private:
UPROPERTY(EditAnywhere, Category = "Attributes")
TArray<TSubclassOf<UGameplayAbility>> StartupAbilities;
* 해결 : End Ability 함수를 호출해야 end가 됨
feat : GameplayAbility 클래스 구현 · DongHoonYu96/GameplayAbilitySystem_Aura@f89af01
Bisu96 committed Jun 8, 2024
github.com