* 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가 됨
'UE5 > Gameplay Abilities' 카테고리의 다른 글
[UE5] 태그에 맞는 능력 활성화 구현 (0) | 2024.06.09 |
---|---|
[UE5] Input바인딩용 클래스 생성, 클릭이벤트 발생 테스트 (0) | 2024.06.09 |
[UE5] 태그-입력 연결 구현, 런타임에 입력변경 구현준비 (0) | 2024.06.09 |
[UE5] GA 옵션들 살펴보기 (0) | 2024.06.09 |
[UE5] Gameplay Ability 개념 (0) | 2024.06.08 |