This seems to be an ongoing bug that has been around forever. I’ve posted about it in different forums, showed how to reproduce it, and filed it as a bug. It just doesn’t seem to get much attention or be taken seriously. This bug is a fundamental flaw that makes proper inheritance and loose coupling NOT POSSIBLE. Inheritance needs to work or developers can’t do their work. If inheritance is possible and included, then it should work and not lead the developer down a stray path.
When I upgraded from 5.4.3 to 5.4.4 I thought the issue was fixed, but I’m seeing it again in 5.4.4 and hearing of similar issues in 5.5…I’ve also used the Circular Reference Finder and eliminated as much of those as possible.
Yet people continue to publish games with Unreal Engine so surely they came upon this bug. What are they doing to work around it? I have no idea, probably use less actor components, less child actors, less inheritance, and more monolithic blueprints with all the stuff that would normally be in separate components?
https://www.reddit.com/r/UnrealEngine5/comments/1jzxa95/are_actor_components_buggy/
^ Huge list of links describing this bug.
Also have a look at this thread about 5.5 inheritance and packaged builds:
The consensus seems to be that this bug is related to child actor inheritance, meaning when you have a parent actor BP and make a child BP of it. When the child BP is dropped into a level and some variables are set on that instance, they get reset to default sometimes, like when opening the project, or recompiling the child BP.
I’ve spent a month trying to fix this and think I was able to reproduce the undesired behavior in UE 5.4.
- Make a new project with the third person kit.
- Make a child of the BP_ThirdPersonCharacter.
- Make a new actor component, add a TestVar (String) with Instance Editable enabled and make the default value “asdf”.
- Add this actor component to the BP_ThirdPersonCharacter parent (not child).
- Drop a few of the BP_ThirdPersonCharacter_Child into a level.
- Set the value of TestVar differently on each child actor instance’s component in the level.
- Now recompile the BP_ThirdPerson_Character_Child a few times and then check the TestVar on each child actor instance in the level. They have been reset to the default value of “asdf”.
What’s odd is that sometimes the values will hold to what you’ve set (for a while), other times they reset after a single recompile of the child actor blueprint.