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;

 

auraGA상속받은 BP 만들어주시고
내부함수에 이상한게 잇는데 테스트해보자
의존성 주입 까먹지말고
싫랭결과, but End문구가 뜨지않음

* 해결 : End Ability 함수를 호출해야 end가 됨

결과

 

https://github.com/DongHoonYu96/GameplayAbilitySystem_Aura/commit/f89af01fd879e141f73cecc89f51d2e399f6354a

 

feat : GameplayAbility 클래스 구현 · DongHoonYu96/GameplayAbilitySystem_Aura@f89af01

Bisu96 committed Jun 8, 2024

github.com