UStaticMeshComponent::SetMaterial() working in BeginPlay() but not in constructor?

of course, because in the constructor the material is nullptr, then you set whatever value in the editor, thats way only work in begin play, you might integrate OnConstruction like @pickersZ said