관리 메뉴

기억을 위한 기록들

애셋 레퍼런싱 관리 방법 (ConstructorHelpers/ C++에서 에디터의 애셋 불러오기) 본문

UnrealEngine/UE4 - CPP

애셋 레퍼런싱 관리 방법 (ConstructorHelpers/ C++에서 에디터의 애셋 불러오기)

에드윈H 2020. 10. 5. 15:01

 

ConstructorHelpers 이름에서도 알수 있듯이 생성자도우미(?)이다.

 

 

방법 1.

 

 

 

방법 2.

 

 

난 지금까지 C++에서 에디터의 애셋을 불러 올때,  방법 1만 사용해왔다. 그러던 중 언리얼 기본 샘플 프로젝트 블록 C++에서 방법2을 보고 알아보았다.

 

역시 공식문서상에 설명이 간단하게 있었다.

 

docs.unrealengine.com/ko/Programming/UnrealArchitecture/Reference/Classes/index.html

 

게임플레이 클래스

게임플레이 클래스 생성 및 구현을 위한 레퍼런스입니다.

docs.unrealengine.com

 

생성자 스태틱 및 헬퍼

 

좀 더 복잡한 데이터 유형, 특히나 클래스 레퍼런스, 이름, 애셋 레퍼런스 값을 설정하는 데는, 생성자의 ConstructorStatics 구조체가 필요한 여러가지 프로퍼티 값을 담을 수 있도록 정의하고 인스턴싱하는 것이 필요합니다. 이 ConstructorStatics 구조체는 생성자가 처음 실행될 때만 만들어집니다. 그 이후의 실행시에는 그냥 포인터만 복사하므로 매우 빠릅니다. ConstructorStatics 구조체 생성시 구조체 멤버에 값이 할당되어, 나중에 생성자에서 실제 프로퍼티 자체에 값을 할당할 때 접근할 수 있습니다.

ContructorHelpers 는 ObjectBase.h 에 정의되는 특수한 네임스페이스로, 생성자 전용 흔한 동작을 수행하는 데 사용하는 헬퍼 템플릿이 들어 있습니다. 예를 들어, 애셋이나 클래스로의 레퍼런스 검색은 물론 컴포넌트 생성 및 검색용 헬퍼 템플릿이 있습니다. -위 공식 문서 중 일부-

 

 

간단히 설명하면  구조체로 경로들은 담아 놓아 좀 더 손 쉬운 추가, 삭제, 변경 등을 할 수 있을 것이다.

 

방법1로도 불가능한것은 아닌데, 애셋 레퍼런싱의 개수가 적을때는 큰 문제 없으나, 대량의 애셋 레퍼런싱을 하게 된다면 방법2가 훨씬 나을것이다.

 

예)

 

이전의 만든 길찾기 알고리즘 프로젝트 중 블록 색상 매터리얼 애셋들을 가져오기위한 FConstructorStatics 구조체 생성 레퍼런싱