언리얼엔진/언리얼 C++

GamePlayTag와 Data Asset

season97 2024. 10. 16. 11:45

 

 개인적인 공부를 위해 포스팅 하는 글입니다.


#GamePlayTag 추가하기

ㆍ GamePlayTag는 태그를 그룹화 할수있는 특징을 가지고있다.

 

공식문서 링크

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/using-gameplay-tags-in-unreal-engine

ㆍ 프로젝트 세팅의 GamePlayTag 메뉴에 가면 여기서 추가해 줄 수 있다.

ㆍ 이미 있는 계층구조에 추가를 시킬수도 있다.

 

#근데 이렇게 만들면 C++에서 사용할 수 없다. 그래서 c++에서 GamePlayTag를 만들어 사용하자 

 

ㆍ 아무것도 상속을 받지않은 클래스인(NONE) R1GamePlayTags 클래스 생성 

그냥 해주면 안되고 모듈을 추가해 줘야 한다. 

 

ㆍ 기본으로 들어가있는 이 헤더는 자주 사용하는 미니멀 헤더들을 싹다 컴파일 하는거... 그래서 좀 많다

ㆍ 태그를 구성하는데 필요한 헤더는 필요한 헤더는 이거니까 이거만 불러왔다

 

 

ㆍ 클래스는 필요 없어서 지워주고 헤더와 cpp를 이렇게 구성해주면 태그가 추가된다.

ㆍ include와 매크로문이 핵심

ㆍ프로젝트 세팅에 들어가 Gameplay Tag 탭을 열어보면 이렇게 추가된 모습.

# 이걸 나중에 enum문으로 활용할 수 있다 뭐 예를들어 CC기(기절,속박,공포 등등) 을 분리하는 enum으로도 활용해 설계할 수 있겠고.. 비트플래그 느낌으로?? 

 


 

# 에셋매니저

ㆍ 커스텀이 가능하다.

에셋매니저의 상속을 받는 클래스 생성

코드를 이렇게 구성해주자. 싱글톤으로 해준다

내가 만든 R1AssetManager를 프로젝트 세팅에서 바꿔준다.

※ 단순히 리소스를 불러오는것 뿐 아니라 필요한 부분만 로드해오기,, 바뀐 리소스만 가져오기 등,, 다양한 기능을 정의할 수 있는 클래스다.

 


 

#Data Asset

공식문서 링크 : https://dev.epicgames.com/documentation/ko-kr/unreal-engine/data-assets-in-unreal-engine

※ 문서 번역이 잘 안되어있으니 언어를 영어로 하고 보자

데이터를 Asset화 시켜서 관리해줄수 있게 해주는 친구. 이걸 C++에서 활용해보자

 

DataAsset의 상속을 받는 클래스를 생성해줬다. InputData를 해보자

ㆍ 구조체를 만들어서 태그와, 어떤 액션을 매핑할 것인지를 받을 수 있게 정의해주고 프로퍼티 연산자를 통해 에디터 어디서든 다 접근할 수 있게 해줬다.

USTRUCT 매크로를 쓰면 구조체도 리플렉션 시스템의 영향을 받는다 

코드로 만들고 이렇게 직접 매핑해 볼 수 있다.

 

 


# Primary Data Asset

ㆍ 영어다.. 대충 Bundle support, (꾸러미 여러개로 리소스를 싹다 패키징, 필요한 부분만 다운로드 언로드. 이런건 Primary를 사용해야 한다는 소리인듯?) 

 

하나만 만들어서 다른 데이터 에셋을 들고있는 형태로 구현하자

ㆍ 이런 친구들을 Primary Data Asset을 통해 관리한다는 소리

FAssetEntry 구조체를 통해 에셋의 이름 (사실 이름보다 위에 있는 Tag를 사용하는 것이 실수를 줄이는데 좋다), 경로,

라벨(부가정보,옵션느낌?)을 구조체를 만들고

FAssetSet 구조체를 통해 위 데이터를 배열로 관리할 수 있는 구조체를 만들었다. 그이후 맵으로 관리해주자

ㆍ TMap을 이용해 관리해 주는 구조로 설계해봤다.

ㆍ이렇게 작성한 코드의 구조를 눈으로 볼수있게되었다!

 

※ 프로젝트 세팅 수정하기

ㆍ 에셋 매니저 탭에 들어가 아래부분을 추가해 주면 내가 만든 primary data asset을 추가할 수 있다! 

ㆍ 인덱스 0번과 1번은 기본으로 들어가있다. 내가 만든거도 경로로 넣어줄 수 있긴 하지만 에셋을 지정해주는게 더 깔끔하겠다.

'언리얼엔진 > 언리얼 C++' 카테고리의 다른 글

비동기 로딩 AssetManager  (1) 2024.10.17
AssetManager  (1) 2024.10.16
Character와 카메라가지고 장난쳐보기  (0) 2024.10.14
Control Rotation  (0) 2024.10.14
Pawn의 Input  (0) 2024.10.12