Unreal Engine GAS(Gameplay Ability System) 심화LESSON 13
Tag 계층, Tag Query, 상태 충돌 규칙
난이도심화
예상 시간140분
선수지식12강의 전투 태그 사전
13강. Tag 계층, Tag Query, 상태 충돌 규칙
1. 이번 강의에서 해결할 문제
공격마다 Dead || Stunned || Silenced 분기를 복사하면 새 상태를 추가할 때 누락이 생깁니다. 반대로 단순한 하나의 필수 태그까지 복잡한 Query Asset으로 만들면 규칙을 읽기 어려워집니다. 검사 표현을 조건 복잡도에 맞춰 선택합니다.
2. 학습 목표
3. 핵심 개념
FGameplayTag: 하나의 명확한 의미FGameplayTagContainer: All 또는 Any 비교에 적합한 태그 집합FGameplayTagQuery:(A AND B) OR (C AND NOT D)같은 중첩 논리- Required Tag: 없으면 활성화 불가
- Blocked Tag: 하나라도 있으면 활성화 불가
- Cancel/Block 관계: 활성 Ability와 새 요청 사이의 상호작용
4. 구현
공통 전투 Ability에서 차단 상태를 선언합니다.
GASGameplayAbility.cpp
UGASGameplayAbility::UGASGameplayAbility()
{
ActivationBlockedTags.AddTag(GASCombatTags::State_Dead);
ActivationBlockedTags.AddTag(GASCombatTags::State_Stunned);
}
복합 대상 규칙은 Query로 표현합니다.
TargetRule.cpp
FGameplayTagQuery BuildHealTargetQuery()
{
FGameplayTagQueryExpression Living;
Living.NoTagsMatch().AddTag(GASCombatTags::State_Dead);
FGameplayTagQueryExpression NotBlocked;
NotBlocked.NoTagsMatch().AddTag(TAG_State_HealingBlocked);
FGameplayTagQueryExpression Root;
Root.AllExprMatch().AddExpr(Living).AddExpr(NotBlocked);
FGameplayTagQuery Query;
Query.Build(Root);
return Query;
}
단순 공격은 BlockedTags, 팀·상태·모드가 결합된 Target Filter는 Query를 사용합니다. Project Settings의 Ability Tag Relationship Mapping 같은 기능은 엔진 버전과 프로젝트 패턴을 확인한 뒤 중앙 관계 데이터로 도입합니다.
5. 코드가 동작하는 이유
ASC가 Owned Tag Count를 기준으로 활성화를 평가하므로 여러 Effect가 같은 상태를 부여해도 Count가 0이 될 때까지 차단이 유지됩니다. Query는 중첩 논리를 데이터로 직렬화해 조건 분기 중복을 줄입니다.
6. 실패 사례와 해결
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2Tag 계층, Tag Query, 상태 충돌 규칙 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
13강. Tag 계층, Tag Query, 상태 충돌 규칙 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.