Could you change your blueprint-parent constructor to include the FObjectInitializer? Assuming your blueprint derives from ACharacter2D, instead of using a parameterless constructor try:
ACharacter2D(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
And in your cpp:
ACharacter2D::ACharacter2D(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
// Your normal constructor contents here
}
Since you derive blueprint from Hero2D, you’d need to do both that and ACharacter2D. I’m not sure if it’ll make a difference, but maybe the blueprint relies on some stuff from the FObjectInitializer argument.