Adding to existing C++ Enum does not update blueprints using the enum

I created a C++ character class which uses a custom C++ Enumeration in a variable called CharacterState:

Referencing this variable in my blueprint works as expected.

BUT when I go to add a new value to my enumeration the blueprint does not behave as excepted.
I added a new variable to the ECharacterState enum: Flying


After compiling the code I do not see the new enumeration in the blueprint code:


The first thing that is wrong, is that the Enum did not get recompiled. A work around for this is to declare a temporary variable in the header file (of the enum type):


This forces the enum to be recompiled.

The Flying value still does not show in the Blueprint.
The only way to make it work is to add a new Character State getter node, and create a new equality operator.


The top line of code has the new Flying enum value, but the bottom line does not.

This is a serious problem. If you ever change an enumeration after it has already been used in Blueprints, you would have to update every single place using that enumeration. What can I do to fix this?

1 Like

Seems to be broken for a while now:

Workaround for changing C++ enumerations:

  1. Close the editor.

  2. Make the enum change in your IDE (Add, Remove, Rename or Reorder)

  3. Delete the Binaries folder in your project.

  4. Recompile the project through the IDE.

  5. Reopen the editor and everything will be alright.

1 Like

Hi CanadianGuy43,

This is a known issue that we are already aware of (UE-22059). Your workaround is fine, but step 3 is not strictly necessary. Simply performing a standard, non-hot reload compile in Visual Studio with the Editor closed should provide the updated enum to the Editor when the project is opened again.

Hey , this seems to have been a bug for a couple years now. I haven’t been able to find much about the root causes of the issue and just wondering if you know anything you can share with us?


I’m still seeing this issue on 4.22. But this workaround still works.