midas+son의 크리에이티브(creative) 이야기

이건 지난 글에서 이어가는 것일 수도 있다.

왜냐면 지난 글에서는 Actor계열 BluePrint를 C++에서 SpawnActor할 때의 문제가 생겼을 때의 경우지만

이 글은 C++에서 UObject계열의 BP를 참조하는 방법에 대한 글이기 때문이다.


마찬가지로 4.15로 리팩토링 한 뒤부터 StaticLoadObject가 잘 안먹혔다.

그래서 수정 중 Actor계열은 처리 했지만 UObject계열 중 UMaterialInterface을 Load하는 것에는 실패 했다.

UObject계열은 _C를 붙인다고 해서 되지 않는다.


그래서 찾은 방법이 미리 만들어 두는 방법이다.

CDO가 생성될 때 설정하는 방법은 아래와 같다.

.h파일

UPROPERTY()

UMaterialInterface* mOpaque = nullptr;

.cpp파일

클래스이름::클래스이름()    //생성자

{

static ConstructorHelpers::FObjectFinder<UMaterialInterface> mInterfaceOpaque(TEXT("Material'/Game/Member/Member_Opaque.Member_Opaque'"));

mOpaque = mInterfaceOpaque.Object;

}

꼭 생성자에서 해야 한다.

위와 같이 해놓으면 빌드 후 exe실행으로 테스트 해도 변수에 제대로 값이 들어가 있다.


참고 페이지 : https://docs.unrealengine.com/latest/KOR/Programming/Assets/ReferencingAssets/index.html

한글로는 (생성 시간 레퍼런싱), 영어로는 (Construction Time Reference) 부분을 참고하자.