Both the Asset Registry and Asset Manager look for all subclasses of UBlueprintCore and use that to search for blueprint classes and construct an inheritance hierarchy. This always works in editor builds (after [Link Removed] was fixed). This also works fine for most children of UBlueprint because even though that class is not loaded in cooked builds the native class does exist.

However, UBaseWidgetBlueprint (and UWidgetBlueprint) are editor only classes so it is not available when the asset registry tries to construct the BP class hierarchy that is then used by functions like GetDerivedClassNames. This means that widget blueprint assets are not added to the hierarchy and cannot be queried or used as Primary Assets in the asset manager.

Steps to Reproduce

From a UDN report, here's a programmer-only way to see the core problem:

  1. Add a breakpoint to FAssetRegistryImpl::CollectCodeGeneratorClasses right after the call to GetDerivedClasses
  2. Launch any game (like Lyra or QAGame), hit the breakpoint, and inspect BlueprintCoreDerivedClasses. Note that it includes BaseWidgetBlueprint
  3. Package that game for windows in the editor (ie in Development)
  4. Launch the cooked version (Development) of that game, hit the same breakpoint
  5. Note that BaseWidgetBlueprint is missing from the derived classes list, which means it's children do not get added to cached bp inheritance map

Have Comments or More Details?

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

Login to Vote

ComponentUE - Foundation - Core
Affects Versions4.275.0
Target Fix5.4
CreatedAug 10, 2022
UpdatedFeb 16, 2024