Currently, the Blueprint compiler will only update references to a reinstanced CDO/archetype object if it falls within the immediate hierarchy of the Blueprint class type OR if it's a component template or ChildActorComponent actor template. This is done as an optimization.

For example, if a Blueprint instance happens to cache a reference to an unrelated CDO, these references will not currently be replaced if the target Blueprint is recompiled after it's been cached.

Normally this isn't an issue, but for certain workflows (e.g. the experimental feature that allows selected BPs to be edited during PIE), this can present a problem.

Current suggested workaround is to always query the CDO when needed rather than caching it, if possible.

Steps to Reproduce
  1. Download/build attached project (4.27).
  2. In Project Settings/Editor/Blueprint Project Settings/Play, add "SubThingy" to "Base Classes to Allow Recompiling During Play in Editor."
  3. Open MyLevel.
  4. PIE, then open the "SubThingy" BP for edit.
  5. In the event graph, change the string value on the PrintString() node.
  6. Compile, and a crash will occur, OR
  7. type 'ce test' into the console, and a crash will occur.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-143731 in the post.

Login to Vote

ComponentUE - Gameplay - Blueprint Compiler
Affects Versions4.
Target Fix5.2
Fix Commit22483496
Main Commit22483496
CreatedFeb 24, 2022
ResolvedOct 12, 2022
UpdatedNov 4, 2022
View Jira Issue