I had a similar problem and i believe its because your assets are not finished leading by the time you BeginPlay(). You could try force loading early using LoadSynchronous().
Yeah, I thought that, too and I even have a LoadSynchronous() on the class in the code I posted. It’s only a code class extended by a blueprint. Does that matter?
have you tried using subclass, in terms of TSubclassOf instead of what you have TSoftClassPtr, since subclass holds direct reference? Otherwise if you have to use soft class, maybe force a synchronous load in OnRegister()