Soft Actor Pointers in Level Instances

If an actor is placed in a level, and refers to another actor in that level via a TSoftObjectPtr<AActor> it will work just fine in both standard and world partition levels.

If you then take this level and add it to another as a level instance this relationship will break and the soft pointer will never resolve. This is happening because the actor path stored in the pointer is still the path for the level that has been instanced (including the level name), and not the path for the combined level with the instance in it.

This seems to be a valid use for soft pointers, seeing as Niagara and other areas also use this pattern to refer to other actors, but it appears to just not work with level instances.

Is there a way to fix this, or is there an alternative we should be using?

Steps to Reproduce

  • Create an actor with a TSoftObjectPtr<AActor> member property, EditInstanceOnly.
  • Create a level with an instance of this actor and a second arbitrary actor
  • Set the soft pointer property to refer to the second actor
  • Add this level as a level instance to a different level
  • Note that the soft pointer will never resolve despite both actors being present.

Hello,

I’ve tested this on my side following the same setup you described, and in my case the soft reference does resolve correctly inside the Level Instance.

Starting with Unreal Engine 5.5, some improvements were introduced specifically to help soft references like TSoftObjectPtr auto-correct when used inside Level Instances.

Could it be that there’s an extra configuration or setup difference between our projects?

Does this issue also happen for you in a completely empty new project using the same engine version?

Thanks again for your time and looking forward to your reply!

Best regards,

Gonzalo