Changes in C++ are not reflected to Blueprint after Building

Hello,
I am using Unreal 4.25. This bug occurs after programming an actor component for a while.

Issue:

  • Changes done to an actor component in C++ are not reflected to Blueprint without reopening the Unreal editor.

Reproduce:

  • Create an actor component in C++.
  • Add that component to some actor in Blueprint.
  • Add some UPROPERTYs and UFUNCTIONs to the component from C++, all BlueprintReadOnly/ReadWrite or BlueprintCallable.
  • Build from Visual Studio (or Rider).
  • The newly added UPROPERTYs or UFUNCTIONs will not be visible in blueprint without reopening the Unreal editor.

I have tried:

  • Refresh all nodes.
  • Remove and attach the component back (not feasible for big projects).
  • Compile within the Unreal editor.
  • Rebuild from VS or Rider.

None of the above works. I have to reopen the Unreal editor every time I make a new change. This slows down the workflow dramatically, it leads to bugs, leads to misinformation (e.g, BlueprintReadWrite variable does not become settable in blueprint => makes people think BlueprintReadWrite is not the correct specifier, but it is) and overall frustrates the user.

I will add here that this does not instantly happen. I’ve been working on a component for 2 days, it started happening only recently.

Thank you for your attention.

“I have to reopen the Unreal editor every time I make a new change.”

This has always been the workflow for me. The blueprints have to be recompiled/reprocessed by the Editor with any changes done to the C++ component. I have had blueprints corrupted by too much churn in the constructor and/or components being removed/attached.

If there is an alternative, I would love to know it.

Any changes made into the header (.h) file or in the constructor may require you to re-open the editor to work properly, this is just how it works.

If you want a longer explanation, take a look here: Hot Reload and Live Coding | Unreal Engine Community Wiki

Thank you guys and thank you also for the link, interesting read.

Save first, then:

RMB->Asset Actions->Reload

This works perfectly for me. Thanks.