CreateDefault(Subobject) 사용 시 에러가 발생하고 터지는 문제가 발생했다. 생성자가 아닌 다른 위치에서 생성해서 발생한 문제였다.

 

 

 


 

 

[Unreal] CreateDefault(Subobject) 사용 시 터지는 문제해결


 

 

문제 상황

 

CreateDefault(Subobject) 사용할 때는 생성자 위치에서 생성해야 한다.

Begin Play에 생성할 경우 동적할당으로 생성하게 되어 터지게 된다.

 

 


 

코드 변경

 

변경 전

void ACAttachment_Bow::BeginPlay()
{
...
//Player cast하기
PlayerCharacterCast = Cast<ACPlayer>(OwnerCharacter);
CheckNull(PlayerCharacterCast);
CHelpers::CreateComponent<USplineComponent>(this, &ArrowPathSpline, "ArrowPathSpline", Root);
ArcEndSphere = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMeshComponent"));
ArrowPathSplineMesh = CreateDefaultSubobject<USplineMeshComponent>(TEXT("ArrowPathSplineMesh"));
}

 

변경 후

ACAttachment_Bow::ACAttachment_Bow()
{
...
//Player cast하기
PlayerCharacterCast = Cast<ACPlayer>(OwnerCharacter);
CheckNull(PlayerCharacterCast);
CHelpers::CreateComponent<USplineComponent>(this, &ArrowPathSpline, "ArrowPathSpline", Root);
ArcEndSphere = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMeshComponent"));
ArrowPathSplineMesh = CreateDefaultSubobject<USplineMeshComponent>(TEXT("ArrowPathSplineMesh"));
}

 

링크

 

https://daisy0461.tistory.com/72

 

Unreal Class Default Object

Unreal에서 A라는 Class를 만들게 되면 A라는 Class를 기반으로 A Class Default Object(CDO)를 생성한다. 이 Class Default Object는 Unreal Engine Reflection System을 가지고 있는 원본 Object이다. Unreal Engine이 시작할 때

daisy0461.tistory.com