Changes in Child actor components are not propagated to the parent

Hi

I am struggling with this one for a few days and would be gratefull for some advices. I am pretty new to Unreal engine so please point out if I design things incorrectly.

What I want to achieve is to have a building which is constructed from double sided walls. The double side wall is just a blueprint containing two single walls.

Building (blueprint) → many double walls as child actor components
Double wall (blueprint) → two walls as child actor components
Wall (blueprint) → just a wall

So on my scene I just drop the building and all works well. The problem is when I make changes to the Wall or Double wall. These changes are not propagated to the existing objects on the scene. I’ve read that this is because

When you make changes to a blueprint class, Unreal Engine does not automatically propagate those changes to instances of that blueprint that are already placed in the level. This is because Unreal Engine considers each instance of a blueprint to be a separate entity, and it does not have a way to automatically synchronize the state of the blueprint class with the state of instances that are already in the level.

I really like these child actor components because I have everything nicely split across the blueprints. If anyone knows how to solve it that would be great, but if not then suggestions on how to approach what I want to do will be also very welcome.

My ideas (but these are not perfect and I don’t know what is the best, proffesional approach):

  1. Instead of adding this hierarchy of objects I can just build the building on the scene from the Wall objects. Possible but it won’t be as nice, because Double wall simplify thigns for me. I have an interior and exterior sides with different configurations.
  2. Still have a child actor components but add them in the Construction script. It’s fine but I would lose option to edit their position in the editor easily. Also don’t know how will that affect performance.
  3. Do use only one level of blueprint and add all the logic to it. So my Double wall and Wall would just became static meshes and all the logic will be modified to work with this one big monolith.

Thanks for all suggestions and advices.

Is it a problem to place again the parent object in the level if it doesn’t refresh by itself? You can also select the parent in the content browser, then right click the actor and you will be able to replace it directly in the same exact position

@Ares9323 Yes, it is this problem. What if I am going to have hundreds of objects like this? I think I can do the script for this to automate replacement but… if this is not the out of the box option in Unreal engine, then am I designing the object structure incorrectly? Is it a proper way of doing things?

I thought you were just talking about a single parent object that was complex on the inside, not so many instances, the “optimal approach” would be probably to create the buildings procedurally using instanced static meshes.

For example, the unreal demo room is a big blueprint with customizable instance settings:


If you show an example of what you’re doing I think we could help you more easily.

@Ares9323 The procedural generation would be good in some cases, but I would like to have the building layout to be predefined, not random. The building itself would be just one object on the map. However the building blueprint would contain multiple child actor “double walls”. The propagation in my case had issues when I did changes to the “double wall”. It wasn’t reflected in the “building”. Another time when I added some arrow components to the “wall”, then it wasn’t reflected in the existing “double wall”. I must admit that sometimes it works and I couldn’t find the patter when it doesn’t. I hoped there is some logical explanation of how the propagation system work in Unreal.

To visualise it I contributed to the old, but similar topic, where the problem was unresolved. Here is the link and it contains screenshots from my project:

Please let me know if that is sufficient.

I found a work around. The trick is to have both blueprints open and then manually change each relevant option, location etc. and then manually add the value back without undoing it. This forces it to reset the instance. It isn’t ideal but better then other options.

Hi there @codeedward1,

This topic has been moved from International to Programming & Scripting: Blueprint.

When posting, please review the categories to ensure your topic is posted in the most relevant space.

Thanks and happy developing!

1 Like

Do you mean I need to change the location of the child actor in the parent BP? For instance to change location of each of the Wall child actors in the DoubleWall BP? Then change it back to the initial value?

If I understand you correctly this would be the approach:

  1. Do the change in the location of the Wall BP. Let’s say I move it up a bit from 0 to 50.
  2. DoubleWall has two Walls and this change to Wall is not reflected right away.
  3. Open DoubleWall and change each Wall child object from 0 to 1 and save.
  4. Change each Wall child object from 1 to 0 and save.
  5. Now both child objects type Wall are moved up by 50 units because unreal updated the Wall instances.

Is this what you mean?