C++에서 애셋 레퍼런싱(Referencing Assets)
이건 지난 글에서 이어가는 것일 수도 있다.
왜냐면 지난 글에서는 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) 부분을 참고하자.
'공부 > Unreal4' 카테고리의 다른 글
Unreal4 HTML5 테스트 중 - 4.16 Deprecated Functions(by Class.h) (0) | 2017.06.19 |
---|---|
Unreal4 HTML5(WebGL2) 프로토타입 - 모바일 HDR 설정 (0) | 2017.06.18 |
C++에서 BP(블루프린트) SpawnActor 하기 (4.15 이후) (0) | 2017.05.30 |
언리얼4 - float to FString , FString to float 주의사항 (0) | 2017.05.18 |
GetWorldTimerManager().SetTimer() (0) | 2017.05.13 |