UE(GAS) - GetActivatableAbilities()

2024. 8. 7. 01:16Unreal Engine

 

  • 어빌리티 목록 가져오기: GetActivatableAbilities()는 AbilitySystemComponent에 설정된 모든 활성화 가능한 어빌리티의 목록을 반환합니다. 이 목록은 FGameplayAbilitySpec 구조체로 구성된 배열로, 각 구조체는 개별 어빌리티에 대한 정보를 담고 있습니다.
  • 어빌리티 사양: FGameplayAbilitySpec은 어빌리티의 인스턴스를 설명하는 구조체로, 어빌리티 클래스, 레벨, 소유자 정보, 인풋 바인딩 등을 포함하고 있습니다.
  • 읽기 전용 접근: 이 함수는 const 멤버 함수로, 어빌리티 목록을 읽기 전용으로 액세스하는 데 사용됩니다. 즉, 이 함수는 어빌리티 목록을 수정하지 않으며, 단순히 현재 등록된 어빌리티의 정보를 조회합니다.
  • 활성화 가능 여부: 이 목록은 "활성화 가능"한 어빌리티의 리스트를 반환하지만, 실제로 해당 어빌리티가 현재 조건에서 활성화될 수 있는지는 별도의 논리로 판단되어야 합니다. 예를 들어, 특정 조건(쿨다운, 리소스 부족 등) 때문에 실제로는 활성화되지 않을 수도 있습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "AbilitySystemComponent.h"
#include "GameplayAbilitySpec.h"
 
void PrintActivatableAbilities(UAbilitySystemComponent* AbilitySystem)
{
    if (AbilitySystem)
    {
        const FGameplayAbilitySpecContainer& Abilities = AbilitySystem->GetActivatableAbilities();
        
        for (const FGameplayAbilitySpec& Spec : Abilities.Items)
        {
            if (Spec.Ability)
            {
                UE_LOG(LogTemp, Log, TEXT("Ability: %s, Level: %d"), *Spec.Ability->GetName(), Spec.Level);
            }
        }
    }
}
cs

 

이 코드는 AbilitySystemComponent에서 활성화 가능한 어빌리티의 이름과 레벨을 로그로 출력합니다. 이처럼 GetActivatableAbilities()는 현재 컴포넌트에 바인딩된 어빌리티의 전체 리스트를 확인하는 데 유용합니다.

요약

  • 목적: GetActivatableAbilities()는 AbilitySystemComponent에 바인딩된 모든 활성화 가능한 어빌리티의 정보를 반환합니다.
  • 반환값: FGameplayAbilitySpecContainer는 어빌리티 사양을 담고 있으며, 이를 통해 어빌리티의 특성 및 상태를 확인할 수 있습니다.
  • 활용: 어빌리티 상태를 확인하거나 특정 조건에 맞는 어빌리티를 필터링하는 데 사용할 수 있습니다.