When CopyActorProperties is used with a target being a template such as a blueprint, it can copy and serialize EditInstanceOnly Properties.

Steps to Reproduce
  1. Create a c++ class with a property marked as EditInstanceOnly. You can set a default value for the property as you please.2.
  2. Create a blueprint of above c++ class.3
  3. View the blueprint in property matrix and notice how the EditInstanceOnly property is the default for the class.(If you view the uasset in a text editor the EditInstanceOnly property is also not there)4
  4. Place several instances of the blueprint into a level and change the instance only property of one of them.(Generally the changing the properties here, by the users doing it, is for tweaking the values to get the overall behavior as desired and not intending to set the instance only values. The instance only values are getting set oftentimes as a biproduct.)5
  5. Click the EditBlueprint button in the details panel and click Apply Instance Changes to Blueprint on the instance that you changed.6
  6. Repeat the processes of step 3 and note how the EditInstanceOnly property on the blueprint now has the value match the instance. (In the uasset you are also now able to find the property.)7
  7. Additionally, the other instances now should no longer have the c++ class default and instead have the value set in the blueprint.
  8. If you so choose you can reset the blueprint's version of that variable via the property matrix(It also removes it from being visible in the text edit of the uasset). But any instances with that property at that value will now be back at the default c++ value.

Have Comments or More Details?

There's no existing public thread on this issue, so head over toAnswerHub just mention UE-64143 in the post.

Login to Vote

ComponentGameplay - Blueprint
Affects Versions4.184.194.20
Target Fix4.23
Fix Commit5561636
Main Commit6835252
CreatedSep 17, 2018
ResolvedMar 26, 2019
UpdatedJun 4, 2019