Description

Triggering an actor component recompilation resets all the variables to the default state on spawned actors in the level.
Users can unintentionally lose property settings on placed actors in a world if they trigger a blueprint compilation for components that are contained in the world. Users know that if they make modifications to parent component settings that it may have potential effects on child objects. However, in this issue users make changes that are unrelated or at least appear to be, and yet lose settings on instances / placed actors.

Steps to Reproduce

The licensee created a repro project, but in case that is not accessible, follow this initial setup:

  1. Create a blank project
  2. Create an Actor Component (test_component)
  3. Add some public variables that we can later change once it is spawned in the scene
  4. Add a Print String to Begin Play
  5. Compile and save the Actor Component
  6. Create a BP of type Actor (test_actor)
  7. Add the previous created component
  8. Compile and save
  9. Instantiate the actor in any scene
  10. Selected the instantiated actor in the Outliner
  11. Select the created actor component in that actor on the Details panel
  12. Change the public variables
  13. Save the level (repro)

Repro steps after content setup:

  1. Repro.umap should open with the editor, but if not, open /Content/repro.umap
  2. Select repro:test_actor in the world outliner
  3. Select repro:test_actor.test_component within the details panel and observe the values of its properties and that they all override the parent values
  4. Open blueprint /Content/test_component.uasset with the BP editor
  5. Delete the 'PrintString' node within test_component's event graph
  6. Compile test_component
  7. Observe that the instance values of repro:test_actor.test_component have erased / reset to match those of Content/test_actor.test_component

Additional repro steps for broken template resetting:

  1. Create a child blueprint class of test_actor by right clicking to create child
  2. Select the test_component on the child class
  3. Set the properties on the child's test_component to match the values on the on original test_component (which are the same as the ones that were set on the test_actor
  4. Compile test_component
  5. Observe that the values on the template of the test_component on your child class reset to match the values of test_actor.test_component

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-222390 in the post.

4
Login to Vote

Fixed
ComponentUE - Gameplay - Blueprint
Affects Versions5.4.3
Target Fix32.005.5
Fix Commit36629032
CreatedAug 21, 2024
ResolvedSep 26, 2024
UpdatedOct 16, 2024
View Jira Issue