티스토리 뷰
Gameplay Ability System - Top Down RPG / Section 9-2
Just Move 2026. 7. 3. 01:11Granting Abilities
이제 실제 Gameplay Ability를 만들 차례이다.
바로 Gameplay Ability 블루프린트를 만드는 것도 가능하지만, 프로젝트에서 사용할 모든 Ability가 공통으로 사용할 기능을 넣기 위해 GameplayAbility를 상속받는 C++ 베이스 클래스를 우선 생성해줄 것이다.


우리는 시작 시 캐릭터에게 Ability를 부여하는 구조를 만들 것이다.
AuraCharacterBase 클래스에 게임 시작 시 캐릭터에게 부여할 Gameplay Ability 목록을 블루프린트에서 설정할 수 있는 변수(StartupAbilities)를 추가한다.
그리고 이 목록의 Ability들을 실제로 캐릭터에게 부여하는 AddCharacterAbilities() 함수를 생성한다.

Ability 기능 부여는 서버만 해야하기 때문에 가장 먼저 서버인지 검사해줄 것이다.

현재 Character에서 Ability를 부여하려고 하지만, 실제로 Ability를 관리하는 것은 AbilitySystemComponent이다.
따라서 AbilitySystemCOmponent에게 이 Ability들을 지급하라고 요청만 해야 한다.
이를 위한 함수를 AuraAbilitySystemComponent에서 구현해주자.

반복문을 통해서 Ability Blueprint를 하나씩 가져오고, Gameplay Ability 부여를 위해서는 FGameplayAbilitySpec이 필요하다.
그리고 GiveAbility 함수를 사용하면 Ability가 부여되지만, 지금은 GiveAbilityAndAcitivateOnce 함수를 사용하여 부여 및 즉시 활성화까지해줄 것이다.

다시 AuraCharacterBase로 돌아가서 방금 구현한 함수를 호출해주자.
이를 통해 Character는 Ability를 직접 부여하지않고, AbilitySystemComponent에 부여를 요청하게 된다.

다음으로는 어디서 최종적으로 해당 함수를 호출할지이다.
현재 플레이어는 PossessedBy() 함수에서 AbilitySystem을 초기화하고, IniAbilityActorInfo 함수를 호출한다.
따라서 바로 다음 줄에 AddCharacterAbilities 함수를 위치시켜주자.

이제 컴파일을 하고, 여태 작업한 C++ 클래스를 토대로 블루프린트 클래스를 생성해주자.

그리고 해당 블루프린트에서 테스트용으로 Ability가 활성화될 때와 비활성화 될 때 간단한 문구를 출력하도록 하였다.

그리고 캐릭터 블루프린트로 가서 Ability를 할당하는 것도 잊지 말자.

이제 게임을 실행하면, Ability 활성화 문구만 뜨는 것을 볼 수 있다.

이는 Ability가 자동 종료되지 않기 때문이다.
따라서 문구 출력 후 Ability를 종료시켜주고, 다시 테스트해보자.


'Study > [Unreal] Udemy 강의' 카테고리의 다른 글
| Gameplay Ability System - Top Down RPG / Section 9-1 (0) | 2026.07.02 |
|---|---|
| Gameplay Ability System - Top Down RPG / Section 8-32 (0) | 2026.07.01 |
| Gameplay Ability System - Top Down RPG / Section 8-31 (0) | 2026.06.29 |
| Gameplay Ability System - Top Down RPG / Section 8-30 (0) | 2026.06.28 |
| Gameplay Ability System - Top Down RPG / Section 8-29 (0) | 2026.06.27 |
