When blueprints are compiled, instances of those blueprints have their attachments detached and then reattached. Reattachments always occur on the RootComponent regardless of which component they were originally attached to. 

Steps to Reproduce

User's repro steps:

  1. Create a new Actor Blueprint
  2. Add a skeletal mesh component to the root component
  3. Assign a skeletal mesh to the newly added component, look up/remember the name of 1 bone/socket
  4. Create a new blueprint function. Make sure to mark it as CallInEditor
  5. Add logic to the blueprint function to spawn a new actor. attach that actor to the current(self) blueprint's skeletal mesh component. Use AttachToCOmponent for that .Make sure to use the bone/socket name you got in step 3
  6. compile/save the blueprint
  7. Place an instance of the actor blueprint in the current level
  8. Run the blueprint function you created in steps 4/5 from the details panel for the newly created instance of the actor blueprint
  9. You should see a newly created actor in the level outliner attached to the actor instance created in step 7
  10. Open up the actor blueprint make in step 1. Compile this blueprint
  11. if you look at how the attachment is made (either in code or by moving the skeletal mesh) you will now see that the actor is attached to the actor's root component. Not the skeletal mesh bone/socket it previously was attached to. 

Have Comments or More Details?

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

Login to Vote

ComponentUE - Gameplay - Blueprint
Affects Versions5.25.4
Target Fix5.5
CreatedOct 12, 2023
UpdatedFeb 13, 2024
View Jira Issue