For two map placed actors, if one actor B's non root component is attached to another actor A, the attachment is not retained when actor A reruns its construction script, such as when moving actor A in the editor.
AActor::RerunConstructionScripts() attempts to cache and restore attached components. However, the logic assumes that any attached actors are attached via their root component, which is not necessarily true. While the following code there does find attached actors who are attached via their non-root component:
// If there are attached objects detach them and store the socket names TArray<AActor*> AttachedActors; GetAttachedActors(AttachedActors);
the function then proceeds to assume that the attached actor's root component is how that actor is attached to this one:
USceneComponent* EachRoot = AttachedActor->GetRootComponent(); // If the component we are attached to is about to go away... if (EachRoot && EachRoot->GetAttachParent() && EachRoot->GetAttachParent()->IsCreatedByConstructionScript())
The attached actor's non-root component is not processed, so their attachment to this actor won't be reattached.
I suggest considering either to:
See attached repro UE 5.3 project.
Repro steps:
How does TextureRenderTarget2D get TArray<uint8> type data?
How do I set a material as a post-processing material?
How to delete some elements correctly when deleting an array loop?
UMG RichText not appear image when packaged
What is the difference between Camera and CineCamera?
Why RevisionControl connect failed in Unreal5.4 but Unreal5.3 success
Why does UV setting float2(1,1) display incorrectly in the material's custom node?
Why does the volume fog disappear from a distant view?
How to convert the datasmith scene file to BluePrint. Create animations in BluePrint.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-204110 in the post.