본문으로 건너뛰기
Unreal Engine GAS(Gameplay Ability System) 심화LESSON 12

GameplayTag를 전투 상태로 설계하는 방법

난이도심화
예상 시간135분
선수지식11강의 Attribute·Tag Delegate

12강. GameplayTag를 전투 상태로 설계하는 방법

1. 이번 강의에서 해결할 문제​

RequestGameplayTag("Stun")을 여러 파일에 직접 쓰면 오타가 런타임까지 숨어 있고 이름 변경 범위를 찾기 어렵습니다. 입력, Ability, Effect, 상태와 Cue 태그가 같은 접두어를 섞어 쓰면 상위 태그 Query가 의도하지 않은 대상을 포함합니다.

2. 학습 목표​

3. 핵심 개념​

Ability.Attack.Basic
Ability.Movement.Dash
InputTag.Ability.BasicAttack
State.Dead / State.Stunned / State.Silenced / State.Invulnerable
Effect.Damage / Effect.Buff / Effect.Debuff
Cooldown.Ability.Dash
GameplayCue.Combat.Hit / GameplayCue.State.Stunned
Event.Combat.HitConfirmed

Root는 “어디에 쓰는가”, 하위 계층은 “무슨 의미인가”를 나타냅니다. State.Stunned를 Ability.Stunned 아래 두지 않습니다.

4. 구현​

GASCombatTags.h
#pragma once

#include "NativeGameplayTags.h"

namespace GASCombatTags
{
GASCOMBAT_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Input_BasicAttack);
GASCOMBAT_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Input_Dash);
GASCOMBAT_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(State_Dead);
GASCOMBAT_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(State_Stunned);
GASCOMBAT_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(State_Silenced);
GASCOMBAT_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(State_Invulnerable);
GASCOMBAT_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Data_Damage);
}
GASCombatTags.cpp
#include "Tags/GASCombatTags.h"

namespace GASCombatTags
{
UE_DEFINE_GAMEPLAY_TAG(Input_BasicAttack, "InputTag.Ability.BasicAttack");
UE_DEFINE_GAMEPLAY_TAG(Input_Dash, "InputTag.Ability.Dash");
UE_DEFINE_GAMEPLAY_TAG(State_Dead, "State.Dead");
UE_DEFINE_GAMEPLAY_TAG(State_Stunned, "State.Stunned");
UE_DEFINE_GAMEPLAY_TAG(State_Silenced, "State.Silenced");
UE_DEFINE_GAMEPLAY_TAG(State_Invulnerable, "State.Invulnerable");
UE_DEFINE_GAMEPLAY_TAG(Data_Damage, "Data.Damage");
}

Project Settings의 Tag Dictionary와 Config도 소스 관리하며 Redirect가 필요한 이름 변경은 한 릴리스 동안 Migration 계획을 둡니다.

5. 코드가 동작하는 이유​

Native Tag는 오타가 난 문자열 호출을 분산시키지 않고 코드 검색과 Rename 범위를 명확하게 합니다. 계층적 이름은 HasTag의 부모 매칭과 Tag Query를 활용하면서도 목적별 Root가 우연한 교차 매칭을 막습니다.

6. 실패 사례와 해결​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

GameplayTag를 전투 상태로 설계하는 방법 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“GameplayTag를 전투 상태로 설계하는 방법” 기능을 확장하기 좋은 구조로 설명한 것은 무엇인가요?
  2. 문제 2“GameplayTag를 전투 상태로 설계하는 방법”의 작업 기준으로 ‘State와 Ability를 같은 Root에 혼합’을 진단하거나 바로잡은 선택은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

12강. GameplayTag를 전투 상태로 설계하는 방법 미완료 상태