Unreal Engine GAS(Gameplay Ability System) 심화LESSON 18
입력 바인딩: Enhanced Input과 Ability Input Tag
난이도심화
예상 시간165분
선수지식17강의 입력 태그 Ability Set
18강. 입력 바인딩: Enhanced Input과 Ability Input Tag
1. 이번 강의에서 해결할 문제
Character가 GA_Dash 클래스를 직접 활성화하면 캐릭터마다 입력 코드가 달라지고 Ability 교체가 어렵습니다. 입력 눌림과 해제를 모두 TryActivate로 처리하면 Hold·Release Ability가 정상 동작하지 않습니다.
2. 학습 목표
3. 핵심 개념
입력 계층은 물리 키→Input Action→Input Tag까지만 압니다. ASC는 Input Tag→Ability Spec을 찾습니다. Ability 클래스 교체는 Ability Set 데이터에서 일어나고 Character 입력 코드는 변하지 않습니다.
4. 구현
GASAbilitySystemComponent.cpp
void UGASAbilitySystemComponent::AbilityInputTagPressed(
const FGameplayTag& InputTag)
{
if (!InputTag.IsValid()) return;
ABILITYLIST_SCOPE_LOCK();
for (FGameplayAbilitySpec& Spec : GetActivatableAbilities())
{
if (!Spec.GetDynamicSpecSourceTags().HasTagExact(InputTag)) continue;
AbilitySpecInputPressed(Spec);
if (!Spec.IsActive()) TryActivateAbility(Spec.Handle);
}
}
void UGASAbilitySystemComponent::AbilityInputTagReleased(
const FGameplayTag& InputTag)
{
if (!InputTag.IsValid()) return;
ABILITYLIST_SCOPE_LOCK();
for (FGameplayAbilitySpec& Spec : GetActivatableAbilities())
{
if (!Spec.GetDynamicSpecSourceTags().HasTagExact(InputTag)) continue;
AbilitySpecInputReleased(Spec);
}
}
Character는 Local Controller의 Enhanced Input Callback에서 두 함수를 호출합니다. Stunned·Dead일 때 Character에서 키를 무시하기보다 Ability Blocked Tag가 활성화를 거절하게 해 AI·Gamepad·자동 실행 경로도 같은 규칙을 사용합니다.
5. 코드가 동작하는 이유
Spec 목록을 잠근 상태에서 Dynamic Tag를 비교해 입력 대상 Ability를 찾습니다. Pressed·Released 이벤트를 ASC에 전달하면 Task가 Hold와 Release를 관찰할 수 있고, Local Predicted Policy는 ASC가 서버 요청과 Prediction Key를 관리합니다.
6. 실패 사례와 해결
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2입력 바인딩: Enhanced Input과 Ability Input Tag 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
18강. 입력 바인딩: Enhanced Input과 Ability Input Tag 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.