For some parent-less BP classes (Parent Class is “None”), lots of classes do not appear when I try to reparent them.
Basically I am attempting to migrate a c++ project by migrating all the assets to a blank c++ project. So far I have successfully transferred and compiled all the c++ classes (after making the appropriate project name changes). I have also migrated all the blueprints.
However, the blueprints that had c++ parents in my last project are now parent-less. I figured all I need to do is re-parent them to the c++ classes that are already compiled. However, they don’t show up in the re-parenting drop-down. In fact, many classes don’t appear. For example, I have a “Unit” class which is a child of APawn (which is a child of AActor). Blueprints that used to be a child of Unit cannot even be re-parented to Pawn or Actor, or any of their children. In fact, the only classes that show up are widget classes, and things like that.
How do I re-parent them to the class they’re supposed to be parented? In fact, how can I even re-parent them to Actor? (Something that seems like we should obviously be able to do.)
One workaround I found is to re-parent all the BPs that you want to migrate to a more generic class that’s inherent in the editor (e.g. Pawn, Actor). Then migrate the asset, and then re-parent it back to its original c++ parent class. (This assumes you successfully transferred and compiled all your c++ code to the new project.) If you do this, I highly recommend you do it from a copy of the project from which you want to migrate, not the project itself. This will break a lot of stuff.
This is a very crude work-around. Depending on the Blueprint, it requires extensively going through that blueprint and fixing a lot of the errors that occur from the re-parenting, resetting defaults, etc. It’s quite a hassle, and it cost me a lot of time. I don’t think this “solution” is deserving of an acceptance tick. I await a more elegant solution. If there doesn’t exist one, then perhaps this should prompt a requested feature.
What worked for me was relatively easy. I created a new blueprint class (that I just deleted later) that extends from that c++ class - this time it was visible in the new BP creation menu. It for some reason refreshed the editors list for reparenting as well, so I was able to see the c++ class in the reparent list. Then I just deleted the dummy BP i created.