Unreal Engine GAS(Gameplay Ability System) 심화LESSON 14
Gameplay Ability의 생명주기와 활성화 조건
난이도심화
예상 시간150분
선수지식13강의 활성화 태그 규칙
14강. Gameplay Ability의 생명주기와 활성화 조건
1. 이번 강의에서 해결할 문제
Ability가 실행되지 않으면 입력, 부여, 태그, 비용, 쿨다운, ActorInfo 중 어느 단계가 실패했는지 구분해야 합니다. 실행됐지만 EndAbility가 호출되지 않으면 다음 활성화와 Task가 막힐 수 있습니다.
2. 학습 목표
3. 핵심 개념
GiveAbility → FGameplayAbilitySpec
Input/Event → TryActivateAbility
CanActivateAbility → Tag/Cost/Cooldown/ActorInfo 검사
ActivateAbility → Commit → Ability Tasks
성공 또는 취소 → EndAbility
Ability가 끝나지 않으면 Instanced Ability와 Task가 남고 Block Tag가 해제되지 않을 수 있습니다.
4. 구현
GA_BasicAttack.cpp 생명주기 골격
void UGA_BasicAttack::ActivateAbility(
const FGameplayAbilitySpecHandle Handle,
const FGameplayAbilityActorInfo* ActorInfo,
const FGameplayAbilityActivationInfo ActivationInfo,
const FGameplayEventData* TriggerEventData)
{
if (!CommitAbility(Handle, ActorInfo, ActivationInfo))
{
EndAbility(Handle, ActorInfo, ActivationInfo, true, true);
return;
}
StartAttackTask(Handle, ActorInfo, ActivationInfo);
}
void UGA_BasicAttack::CancelAbility(
const FGameplayAbilitySpecHandle Handle,
const FGameplayAbilityActorInfo* ActorInfo,
const FGameplayAbilityActivationInfo ActivationInfo,
bool bReplicateCancelAbility)
{
StopAttackWindow();
Super::CancelAbility(
Handle, ActorInfo, ActivationInfo, bReplicateCancelAbility);
}
Task 완료·취소·Montage 중단 Delegate가 모두 EndAbility 또는 CancelAbility로 수렴하도록 설계합니다. 같은 경로에서 두 번 End해도 안 되므로 Callback Handle과 활성 상태를 점검합니다.
5. 코드가 동작하는 이유
ASC가 Spec과 Activation Info로 실행 인스턴스와 Prediction Key를 추적합니다. CommitAbility 실패 시 즉시 End하고 Task의 모든 종료 출구를 연결하면 활성 Tag와 비동기 작업이 누수되지 않습니다.
6. 실패 사례와 해결
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2Gameplay Ability의 생명주기와 활성화 조건 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
14강. Gameplay Ability의 생명주기와 활성화 조건 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.