Unable to edit default values of struct in an inherited component

I just discovered an odd bug where I’m not able to edit the values of a struct, but only in a very specific set of circumstances. The struct has to be inside of another struct, which itself has to be contained in a TMap that’s a property of an ActorComponent, and finally that ActorComponent has to be inherited from a parent code class.

I was able to repro this with the following steps:

  1. Create a new code project using the Blank template.
  2. Create a new code class inherited from ActorComponent.
  3. In the component’s header file declare two different structs, one containing an int32 property (referred to as Inner) marked as EditAnywhere and one containing an Inner struct (referred to as Outer) marked as EditAnywhere.
  4. In the component itself make a TMap property and mark it as EditAnywhere.
  5. Create a new code class inherited from Actor with one of your new ActorComponents from step 2 marked as VisibleAnywhere.
  6. Create a blueprint inherited from your Actor created in step 5.
  7. When you first open the new BP it will use the “data only” UI where it has just the defaults. If you add an element to the Outer struct map it should be editable correctly but if you select “Open Full Blueprint Editor” then it won’t be (see screenshots).

191174-fulleditor.png

Interestingly, if you add an Outer property that isn’t in a TMap then the values in the TMap will be editable correctly, so at least there’s an easy workaround.

Attaching my repro project as well in case my steps above aren’t entirely clear: [Repro][3]

Hello kgamble,

Thank you for reporting this issue. I’ve entered a bug report for this which you can find here: UE-46664. You can track the report’s progress there.

Have a nice day!