본문 바로가기
포트폴리오 제작/Project_P

Project_P 게임플레이 태그 관리 및 추가

by k99812 2024. 8. 27.

프로젝트에 게임플레이 태그 추가


 

언리얼 엔진 5.3 기준

언리얼 에디터 Edit -> Project Settings -> Project -> GameplayTagas

로 가면 게임플레이태그를 관리(추가 제거 등)할 수 있음

 

 

Gameplay Tag List에 Manage Gameplay Tags를 누르면 게임플레이 매니저창이 뜸

 

 

 

매니저 창에선 현재 프로젝트에 추가되어 있는 태그들을 볼 수 있음

또 한 돋보기 옆 녹색 +버튼을 누르면 게임플레이 태그를 추가할 수 있는 UI가 나타남

 

 

이름을 '.' 으로 구별하여 총 3개까지 구별할 수 있음

ex) Character.State.IsWalking, Character.State.IsJumping

Source를 선택하고 Add New Tag를 누르면 GameplayTag가 추가됨

정상적으로 추가된 경우 매니저창에 나타남

 

Cpp로 게임플레이태그 관리


언리얼 에디터에서 말고 Cpp로도 게임플레이 태그를 추가, 삭제할 수 있음

 

Games -> 프로젝트 -> Config -> DefaultGameplayTags.ini 에서 게임플레이 태그를 관리할 수 있음

 

 

에디터에서 추가된 태그들도 해당 파일에서 확인할 수 있음

 

+GameplayTagList=(Tag="X.Y.Z",DevComment="")

 

위에 코드로 태그를 추가할 수 있고 해당 코드를 지우면 게임플레이태그역시 지워짐

 

Cpp로 게임플레이태그 사용


#include "GameplayTagContainer.h"

FGameplayTag::RequestGameplayTag(FName("Character.State.IsAttacking"))

 

#include "GameplayTagContainer.h" 헤더를 추가하고

FGameplayTag::RequestGameplayTag(FName("태그이름"))으로 게임플레이 태그를 가져올 수 있음

 

 

PPGameplayTag.h

#pragma once

#include "GameplayTagContainer.h"

#define PPTAG_ABILITY_JUMP FGameplayTag::RequestGameplayTag(FName("Ability.Jump"))
#define PPTAG_ABILITY_ATTACK FGameplayTag::RequestGameplayTag(FName("Ability.Attack"))
#define PPTAG_ABILITY_SPRINT FGameplayTag::RequestGameplayTag(FName("Ability.Sprint"))

#define PPTAG_CHARACTER_ISATTACKING FGameplayTag::RequestGameplayTag(FName("Character.State.IsAttacking"))
#define PPTAG_CHARACTER_ISJUMPING FGameplayTag::RequestGameplayTag(FName("Character.State.IsJumping"))
#define PPTAG_CHARACTER_ISSPRINT FGameplayTag::RequestGameplayTag(FName("Character.State.IsSprint"))
#define PPTAG_CHARACTER_ISWALKING FGameplayTag::RequestGameplayTag(FName("Character.State.IsWalking"))
#define PPTAG_CHARACTER_ISCC FGameplayTag::RequestGameplayTag(FName("Character.State.IsCC"))

 

게임플레이태그가 필요할 때마다 태그이름을 찾아 입력하기 힘들기 때문에 따로 헤더파일을 만들어

GameplayTagContainer 태그를 추가하고 #define으로 미리 함수를 정의해둘 수 있음

 

게임플레이태그가 필요할때마다 해당 헤더파일을 include시켜 주면 됨