UObject는 NewObject<>를 통해 생성해야 하지만,
어떤 SubClass의 Object를 생성해야 할 때는 다음과 같이 작성합니다.
예를 들어, Magic이란 부모 클래스가 있고
자식 클래스로 다양한 마법 클래스가 있으며
NewObject를 통해 적절한 자식클래스로 마법을 생성해야 할경우 다음과 같이 작성해야 오버라이딩 된 자식 생성자와 함수를 이용합니다.
struct MagicData
{
UPROPERTY(EditAnyWhere)
TSubClassOf<class Magic> MagicClass;
UPROPERTY(EditAnyWhere)
int ID;
};
.
.
.
.
//마법 종류에 따라 다른 자식 클래스로 생성
for(MagicData magic : Magics)
{
Magic* newMagic = NewObject<Magic>(this, magic.MagicClass);
}
* 아래와 같이 작성하면 오버라이딩이 정상적으로 이루어지지 않습니다.
Magic* newMagic = NewObject<Magic>(this, magic.MagicClass->GetFName(), RF_NoFlags, magic.MagicClass->GetDefaultObject(), true); //틀린 예제
Magic* newMagic = NewObject<Magic>(this, magic.MagicClass->StaticClass()); //틀린 예제
참조 링크 :
Cannot make NewObject from array of class : unrealengine (reddit.com)
'공부 및 정리 > Unreal Engine' 카테고리의 다른 글
[메모] UE - TMap에 FStruct 자료형 키 사용하기 (0) | 2022.12.15 |
---|---|
UE4 - 메모1 (0) | 2021.08.16 |
UE4 실습 중.. (0) | 2021.08.11 |
언리얼 엔진 4와 게임 개발 관련 공부 - 2 (0) | 2021.07.23 |
언리얼 엔진 4와 게임 개발 관련 공부 - 1 (0) | 2021.07.18 |