Copying Instanced Object Properties

Hey! We have this issue where if you copy an expression from a Gameplay Tag Query, it copies the path of a transient instanced object, so if you paste it later on somewhere, it’ll not exist anymore, and only None would be inserted.

I’d expect for instanced objects for their properties being serialized instead of the object path being copied, but in FObjectPropertyBase::ExportText_Internal I can’t see anything that’d consider instanced objects.

Is this a desirable thing to happen? Are there any instanced objects in the editor which are currently handling this case some way so that they are properly copy-pastable? An example:

/Script/GameplayTags.EditableGameplayTagQueryExpression_AllTagsMatch'/Engine/Transient.EditableGameplayTagQuery_2:EditableGameplayTagQueryExpression_AllExprMatch_0.EditableGameplayTagQueryExpression_AllTagsMatch_0'As a solution for this specific instance, I was considering changing `UEditableGameplayTagQueryExpression` into an Instanced Struct, but unfortunately for some reason it’s not exposed to Blueprints, so that’d be an API-breaking change.

Steps to Reproduce

  1. Start editing a Gameplay Tag Query
  2. Create some expressions (like All Expressions Match, Any Tags Match)
  3. Copy the expression
  4. Paste it into a notepad
  5. Observe that the object itself was copied, not its values
  6. Click around in the editor for some time
  7. Paste the expression to a query
  8. Observe that ‘None’ is shown instead of the original hierarchy you’ve copied (if it’s still valid, then play around in the editor some more until those objects are completely out of GC)

After some discussion a public ticket has been made Unreal Engine Issues and Bug Tracker (UE\-310391\). Thank you for bringing this to our attention.