Some values are only available after PostInitializeComponents(). Try overriding that method and do your logic there
I have a member variable in my class:
// Pointer to geometry pattern to apply
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = GeomProcess)
UStaticMesh * GeometryMesh;
In the Blueprint defaults, I can assign a mesh to that variable as I want. However if I put a breakpoint in the class constructor I find that the GeomeryMesh is unassigned and always NULL.
// Constructor
UGeomComponent::UGeomComponent(const class FPostConstructInitializeProperties& PCIP)
: Super(PCIP)
{
// Process geometry
if (GeometryMesh != NULL)
{
}
}
However if I later call a function on the class, from a Blueprint I notice that GeometryMesh is now assigned with the UStaticMesh * that I had set up in Blueprint.
How can I get access to the assigned member variables in the class constructor? Or perhaps I should be overloading another function and performing initialisation on member data at another point?
During constructor execution you can create new UObject (ex: PCIP.CreateDefaultSubobject(…), PCIP.CreateAbstractDefaultSubobject(…)) and save it’s pointer in uproperty.
To read value set in blueprint right after object construction, override this method: PostInitProperties.
Thank you, my component is a UActorComponent and so doesn’t have a PostInitialzieComponents() method. It does have an InitializeComponent() method which isn’t called.
In my component I can see bHasBeenInitialized is set to 0 when I call a function on it.
Looking, and fiddling, I find that OnComponentCreated() is called and it appears to have all data so I’ll put the initialisation there. Thanks for the lead.
You’re welcome
Thank you! That’s what I need.