Description

Because of the way blueprints are implemented, the "Blueprint Class" asset actually points to the editor-only UBlueprint object. Because of this, all blueprint classes will show up as options for generic Object pickers, with no indication that they will not work properly. Native classes do not show up, even if you enable the option in the drop down. This frequently leads to user confusion, such as in the attached image where a user tried to compare an blueprint actor instance to the blueprint actor class. It also has caused cooking issues in the past because these references will silently disappear

I can't really think of a case where you would actually want UBlueprints to show up in the editor picker for a UObject. One possible example might be for an editor utility, but you would probably want to reference UBlueprint specifically (which is not itself a blueprint type). There may be a legitimate case where this is needed, but 99% of the time it just confuses people. If we do need to support it, the UI should make it clear that this is the "Blueprint Editor Asset" or something, right now the UI literally says Blueprint Class.

Steps to Reproduce
  1. Make a new actor blueprint, go to event graph
  2. Add a Get Self node, then drag off and add an == node
  3. Click Select Asset Drop down, and note that blueprint classes are available to select
  4. If you were to actually select a class, it will never actually work because it'll end up being the UBlueprint* and not the actual class
  5. The same thing is true if you make an Object BP variable, you can set the default value to a blueprint class

Have Comments or More Details?

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

2
Login to Vote

Backlogged
ComponentUE - Gameplay - Blueprint
Affects Versions4.26
CreatedJul 28, 2020
UpdatedNov 27, 2023