Unreal Engine 의 GameplayTag를 참고하여 만든 기능.
GameplayTag 를 GameplayTagSystemComponent에 저장하여, GameplayTag의 보유, 차단 여부를 통해 상태를 파악함. GameplayTag가 추가, 제거 될 때 Delegate를 호출하여 함수를 실행함.
현재 캐릭터가 땅에 있는지, 경직되어 있는지, 특정 디버프에 걸려있는지를 확인하는 용도로 사용할 수 있음. 이렇게 파악한 상태를 통해 상태 머신을 전환할 수도 있고, 특정 기능의 사용 가능 여부를 컨트롤 할 수 있음.
또, 인스펙터 내에서 관리됨으로 해당 기능을 손쉽게 바꿀 수 있음.
단, 마찬가지로 인스펙터 내에서 관리됨으로 초기 설정이 복잡해질 수 있고, 휴먼 에러가 발생할 수 있음.
두 개 이상의 스크립트에서 제어되는 기능의 경우 활성화 하는 타이밍과 해제하는 타이밍이 다를 수 있고, 그 경우 한쪽에서 기능을 비활성화 시키고, 한쪽에서는 기능을 활성화 시키는 경우가 생길 수 있음.
태그를 사용하지 않는다면 두 경우를 각각 체크하여 둘다 기능을 비활성화 시켰을 때 등으로 하면 해결이 가능함. 허나 이 경우에는 새로운 기능이 추가될 때마다 변수를 추가적으로 만들어줘야 하는 등의 작업이 필요함.
태그를 사용한다면 해당 기능이 빠졌을 때, 해당 태그가 아직 있는지를 확인하여 처리할 수 있음. 또, 특정 태그가 들어왔을 때 이동이 불가능하게 만들었을 때, 인스펙터에서 해당 기능의 추가 제거가 용이함( 태그를 부여하면 이동이 불가능, 태그를 부여하지 않으면 이동이 가능 )