[UE] 게임플레이 태그 (GameplayTag)

2025. 3. 17. 23:52·Unrael

1. 게임플레이 태그

게임플레이 태그는 하나의 라벨이다.

 

도서관에서 도서 태그를 보면 어떤 장르의 책인지 유추할 수 있다. (800:문학, 900:역사)

액터도 게임플레이 태그가 있다면 형변환을 하지 않아도

어떤 타입의 액터인지(무기, 갑옷, 포션...) 쉽게 유추할 수있다.

 

언리얼 엔진에서는 Enum이나 Bool을 통해 분기 처리를 할 수 있는데

게임플레이 태그를 사용해야 하는 이유는 무엇일까?

 

게임플레이 태그는 복잡한 분기 처리가 가능하다.

 

Bool은 True 또는 False 값에 따라 2가지로 분기할 수 있다.

 

Enum은 하나의 범주(ItemType) 내에서 여러 가지 분기가 가능하다.

 

게임플레이 태그는

여러 범주 내에서의 여러 가지 분기 처리가 가능하다.

 

"Item.Equpable.Weapon"

  • Item (아이템인가?)
  • Item.Equpable  (장착 아이템인가?)
  • Weapon (무기인가?)

 

"Item.Consumable.Potion"

  • Item.Consumable (소비형 아이템인가?)
  • Potion (포션인가?)

 

하나의 태그로 다양한 분기가 가능하며

형변환을 하지 않아도 액터가 어떤 타입인지 알 수 있어 클래스 간에 의존성을 낮출 수 있다.

 

2. 게임플레이 태그 추가

직접 태그를 추가할 수 있다.

Edit > Project Settings > Project > GameplayTags에서
GamePlay Tag List > Manage Gmaplay Tags를 누르고 플러스(+) 버튼을 눌러 추가할 수 있다.

 

그리고 데이터 테이플 통해서도 추가할 수 있다.

데이터 테이블을 GameplayTagTableRow로 생성해준다.

 

그리고 Tag 컬럼에 원하는 태그를 추가해준 뒤

 

위 셋팅에서 데이터 테이블을 추가할 수 있다.

 

3. 액터에 게임플레이 태그 설정

 

Source/LyraGame/AbilitySystem/LyraTaggedActor.h · b3f023ca31bff524a13783523a1df660535f6917 · WVS-Project-Examples / LyraStarte

Lyra Starter Game is an example project on WVS that was created by Epic Games as a sample game used to help you understand the frameworks of Unreal...

wvs.io

C++에서 액터에 게임플레이 태그를 설정하는 방법은 Lyra 코드를 참고하였다.

#include "CoreMinimal.h"
#include "GameplayTagAssetInterface.h"
#include "GameplayTagContainer.h"

#include "ItemBase.generated.h"

UCLASS()
class SKYRIM_API AItemBase : public AActor, public IGameplayTagAssetInterface
{
	GENERATED_BODY()

public:
	//~IGameplayTagAssetInterface
	virtual void GetOwnedGameplayTags(FGameplayTagContainer& TagContainer) const override {
    	TagContainer.Append(StaticGameplayTags);
    }
	//~End of IGameplayTagAssetInterface
	
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "GameplayTags")
	FGameplayTagContainer StaticGameplayTags;
    
    ...
}
  1. IGameplayTagAssetInterface 인터페이스를 구현한다.
  2. virtual void GetOwnedGameplayTags(FGameplayTagContainer& TagContainer) const override; 가상함수를 오버라이드 한다.
  3. FGameplayTagContainer 컨테이너를 선언해준다.

 

그리고 블루프린트의 Detail 창에서 이전에 추가해준 태그들을 하나씩 설정해준다.

 

4. 게임플레이 태그 연산

액터에 설정한 게임플레이 태그들은
다양한 함수를 통해 분기 처리를 할 수 있다.
자세한 내용은 공식 사이트에 자세히 설명되어 있다.  (링크)

IGameplayTagAssetInterface* GameplayTagInterface = Cast<IGameplayTagAssetInterface>(Item);
if (GameplayTagInterface == nullptr)
    return;

// 액터의 태그 정보를 컨테이너로 가져온다.
FGameplayTagContainer GameplayTags;
GameplayTagInterface->GetOwnedGameplayTags(GameplayTags);

// 액터에 설정된 태그들을 순회할 수 있다.
for (FGameplayTag Tag : GameplayTags.GetGameplayTagArray())
{
	// MatchesTag : 일부 같은 태그인지 확인한다.
    if (Tag.MatchesTag(FGameplayTag::RequestGameplayTag(FName("Item.Equipable"))))
    {
        ...
    }
    else if (Tag.MatchesTag(FGameplayTag::RequestGameplayTag(FName("Item.Consumable"))))
    {
        ...
    }
}

'Unrael' 카테고리의 다른 글

[Animation] 걷기 / 뛰기 (Walk / Sprint)  (0) 2025.04.23
[Animation] 웅크려 이동하기 (Crouching)  (0) 2025.04.22
[UE/Implement] 총기 격발 및 재장전 시스템 구현 (C++ & 블루프린트)  (0) 2025.02.20
[UE/Settings] 언리얼 에디터 기본 설정  (0) 2025.02.19
[UE/Tools] 스태틱 메시를 스켈레탈 메시로  (1) 2025.02.18
'Unrael' 카테고리의 다른 글
  • [Animation] 걷기 / 뛰기 (Walk / Sprint)
  • [Animation] 웅크려 이동하기 (Crouching)
  • [UE/Implement] 총기 격발 및 재장전 시스템 구현 (C++ & 블루프린트)
  • [UE/Settings] 언리얼 에디터 기본 설정
DevColIn
DevColIn
복잡함을 단순하게
  • DevColIn
    심플한 코딩생활
    복잡함을 단순하게
  • 전체
    오늘
    어제
    • 전체보기 (223)
      • Unreal 부트캠프 (49)
        • TIL (34)
        • 사전캠프 (7)
        • 본캠프 (8)
      • Unrael (10)
        • 환경설정 (0)
        • Basic (19)
        • Component (5)
        • GAS (GameplayAbilitySystem) (3)
        • AI (2)
        • Implement (10)
        • UI (1)
        • Error (1)
        • Network (2)
        • Tip (1)
      • Level Design (5)
      • Math (1)
      • Design Pattern (16)
      • Computer Science (2)
        • Network (1)
        • Database (1)
      • Algorithm (79)
        • Basic (4)
        • Practice (74)
      • C++ (4)
        • Basic (4)
      • Tool (0)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Design Pattern
    사전캠프
    액터
    소프트 레퍼런신
    디자인 패턴
    하드 레퍼런싱
    Animation
    tsoftobjectptr
    Implement
    actor
    KPT회고
    알고리즘
    basic
    Algorithm
    레벨디자인
    게임동기화
    c++
    AI
    GameplayEffect
    내일배움캠프
    디자인패턴
    gas
    unrealengine
    본캠프
    DesignPattern
    Til
    component
    assetmanager
    퀘스트
    unreal
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
DevColIn
[UE] 게임플레이 태그 (GameplayTag)
상단으로

티스토리툴바