GameplayTag란?
GameplayTag는 GAS에서 캐릭터의 상태나 속성을 이름으로 관리하는 시스템이다.
쉽게 말하면,
"현재 어떤 상태인지 알려주는 이름표(Label)" 라고 생각하면 된다.
예를 들어 플레이어가
- 달리는 중이라면 → State.Sprinting
- 기절했다면 → State.Stunned
- 사망했다면 → State.Dead
같은 GameplayTag가 추가된다.
bool 변수로도 가능하지 않을까?
처음에는 대부분 이렇게 구현한다.
bool bIsSprinting;
bool bIsStunned;
bool bIsDead;
bool bIsInvisible;
bool bCanAttack;
bool bCanMove;
처음에는 문제가 없어 보인다.
하지만 게임 규모가 커질수록 bool 변수는 계속 늘어난다.
Player
bIsDead
bIsRunning
bIsBurning
bIsPoison
bIsFrozen
bIsKnockBack
bIsStunned
...
어떤 상태인지 관리하기도 어렵고,
여러 시스템이 같은 bool을 수정하기 시작하면 유지보수도 힘들어진다.
GameplayTag는 이름으로 상태를 관리한다
GameplayTag를 사용하면
State.Sprinting
State.Stunned
State.Dead
State.Burning
State.Poison
처럼 의미 있는 이름으로 상태를 관리할 수 있다.
ASC는 현재 가지고 있는 Tag를 모두 관리한다.
ASC
Active Tags
├─ State.Sprinting
└─ State.Burning
GameplayTag의 장점
1. 상태를 쉽게 확인할 수 있다.
예를 들어 공격을 실행하기 전에
State.Stunned
태그가 있는지만 확인하면 된다.
있다면 공격을 막고,
없다면 공격을 진행한다.
2. 여러 시스템이 같은 기준을 사용할 수 있다.
예를 들어
State.Stunned
하나만 추가하면
- 이동 불가
- 공격 불가
- 스킬 사용 불가
모든 시스템이 같은 Tag를 확인해서 처리할 수 있다.
별도의 bool 변수를 여러 개 만들 필요가 없다.
3. 이름만 봐도 의미를 알 수 있다.
예를 들어
State.Stunned
은
누가 봐도
"기절 상태"
라는 의미를 바로 이해할 수 있다.
GameplayTag는 어떻게 사용될까?
플레이어가 테이저를 맞았다고 가정해 보자.
보안요원 Attack Ability
↓
Stun GameplayEffect
↓
ASC
↓
State.Stunned 추가
이후 다른 Ability들은
State.Stunned
태그가 있는지 확인한다.
있다면 실행되지 않는다.
GameplayTag는 Ability 실행 조건에도 사용된다
예를 들어 Sprint Ability는
State.Stunned
태그가 있으면 사용할 수 없다고 설정할 수 있다.
State.Stunned 있음
↓
Sprint Ability 실행 실패
반대로
State.Stunned 없음
↓
Sprint Ability 실행
처럼 조건을 쉽게 설정할 수 있다.
GameplayTag는 계층 구조를 가진다
GameplayTag는 점(.)을 사용해 계층적으로 관리할 수 있다.
예를 들어
State
├─ State.Sprinting
├─ State.Stunned
├─ State.Dead
Weapon
├─ Weapon.Gun
├─ Weapon.Sword
Item
├─ Item.Food
├─ Item.Drink
이렇게 분류하면 프로젝트 규모가 커져도 관리하기 쉽다.
우리 프로젝트에 적용하면?
마트 습격 게임이라면
다음과 같은 GameplayTag를 사용할 수 있다.
State.Stealing
State.Chased
State.Stunned
State.Hidden
State.OverWeight
예를 들어
무게가 너무 무거워지면
State.OverWeight
태그를 추가하고,
플레이어 이동 Ability는
이 태그를 확인해서 이동 속도를 감소시키면 된다.
GameplayTag와 bool의 차이
bool
- 변수 하나당 상태 하나
- 상태가 많아질수록 변수도 증가
- 여러 시스템에서 관리하기 어려움
GameplayTag
- 이름으로 상태 관리
- 여러 시스템이 함께 사용 가능
- GAS와 자연스럽게 연동
- 확장성과 유지보수에 유리
정리
GameplayTag
- 상태를 표현하는 이름표(Label)
- ASC가 관리한다.
- Ability와 GameplayEffect가 함께 사용한다.
대표적인 예
State.Sprinting
State.Stunned
State.Dead
State.Hidden
실행 흐름
GameplayEffect
↓
GameplayTag 추가
↓
ASC 저장
↓
Ability가 Tag 확인
↓
실행 여부 결정
핵심 한 문장
GameplayTag는 GAS에서 캐릭터의 상태를 이름으로 관리하는 시스템이며, Ability 실행 조건과 상태 판별의 기준이 된다.
'TIL' 카테고리의 다른 글
| [언리얼 GAS 이해하기] #6 GameplayAbility는 네 요소를 어떻게 사용할까? (0) | 2026.06.29 |
|---|---|
| 트러블슈팅 - 레벨 전환/Restart 중 크래시 해결 (0) | 2026.06.27 |
| [언리얼 GAS 이해하기] #4 GameplayEffect는 어떻게 능력치를 바꿀까? (0) | 2026.06.25 |
| [언리얼 GAS 이해하기] #3 Attribute와 float 변수의 차이 (0) | 2026.06.24 |
| [언리얼 GAS 이해하기] #2 AttributeSet은 왜 따로 존재할까? (0) | 2026.06.23 |