Object Constructor Only Called When Debugging

Hello, I am trying to setup my FPSCharacter in C++ and I am creating the components and assigning them in the cpp constructor. Upon building my code, everything compiles successfully. However, once I open the editor and hit play the expected behaviour does not run as expected.

This is odd, as if I run the game with debugging on, it opens up the editor in debug mode and once I hit play in this debug editor, the game starts up and the constructor clearly runs and executes properly. I will say that an exception is thrown that a breakpoint was triggered on a line in my constructor, when I don’t have a breakpoint on that line; This occurs when the engine is opening.

I will say that in the normal editor, my input bindings work properly, but the constructor does not seem to run, and in the debug editor the constructor runs, but the input bindings do not bind properly.

Here is my constructor:

AFpsCharacter::AFpsCharacter()
{
 	// Set this character to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;

	fpsCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("FPS Camera"));

	mesh1P = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("FPS Skeletal Mesh"));
	mesh1P->AttachToComponent(fpsCamera, FAttachmentTransformRules::SnapToTargetNotIncludingScale);

	static ConstructorHelpers::FObjectFinder<USkeletalMesh> armsSkeletonAsset(TEXT("/Game/_ZombiesClone/Player/ownerView/Arms/FPSArms_rigged"));

	if (armsSkeletonAsset.Succeeded())
	{
		mesh1P->SetSkeletalMesh(armsSkeletonAsset.Object);
		mesh1P->SkeletalMesh = armsSkeletonAsset.Object;
	}

	GetMesh()->bOwnerNoSee = true;
	mesh1P->bOnlyOwnerSee = true;
}

The result in editor:

The result in DebugGame Editor:

Can’t guarantee this was the problem. But I have since learned that the constructor is only called once at startup of the engine/game. Not per instance. Unreal does some things behind the scenes to make some kind of factory for objects that are based on the single-time construction of an object at start-up time.

Because of this, when I write a constructor, it doesn’t get called when I press play, because it already had some cached constructor that was called at Engine start time. To reset that, I had to compile my code, close the engine, and reopen it so that it could get a fresh construction.