This behavior is a regression in 4.12. Essentially we switched to attaching child components as part of the OnRegister() logic. This caused all root-level SCS components (including non-scene component types) to register first, followed by child-level SCS components.
See the UDN post for more details.
Note: "Native" non-scene components (i.e. those created in C+) have always been registered before SCS execution. That behavior should remain unchanged for now to be consistent with the previous behavior. However, an additional edge case was found in that a native Actor class with only a non-scene component created in C+ can have a dependency on the root component set by SCS execution - in that case, the native non-scene component registration should be deferred until after SCS execution has set up the root component for the Actor instance. This can be tested as follows (example):
Expected result: SCS scene component instances (including children) are registered BEFORE non-scene SCS component instances.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-35690 in the post.
0 |
Component | UE - Gameplay - Components |
---|---|
Affects Versions | 4.12 |
Target Fix | 4.14 |
Created | Sep 7, 2016 |
---|---|
Resolved | Sep 19, 2016 |
Updated | Feb 4, 2019 |