Dealing with references when deleting or migrating a blueprint

I’d like to pose a general question for discussion. I’ve been trying to learn the engine on my own for some time, and the biggest issue thus far for me has been dealing with references when trying to delete or migrate some part of my project into another.

I don’t have a specific example to pose but there have been many times where I can’t delete an object because it’s accessed by another object. If I force delete the object, I risk corrupting my project or I may have errors that pop up on editor start up that I can never get rid of so the only option seems to be to track down all the references and remove them first. Since I’m learning this on my own, I was wondering if there is common knowledge out there about how to track down these references to delete them cleanly and easily so I can remove or migrate a blueprint.

I know about the reference viewer, and that i can right click on an object and use the various options there to try to find clues about what is referencing an object. I find the readout from those options uninformative at times and sometimes there are no references listed, and i still get the error when trying to delete an object reference or variable that it is in use by another object.

One trick that did help me with a very connected blueprint that I needed to migrate was to open a copy of the project and delete every variable and all blueprints within every object that was listed as connected to it when trying to migrate, and listed as connected in the reference viewer. Even then there were still connections, and I ended up force deleting the other objects to remove the connections. Luckily that did work in the end to not bring over all of the problematic references to the new project.

I know a part of the solution with all these reference issues can be in how you approach blueprint design, and I try to work as object oriented as possible and only set variables needed in blueprints by the owning blueprint in function, and then only calling the functions via other blueprints, but even with that, i still run into this problem often with references, and find it frustrating.

It’s been a big problem for me and has in fact caused me to start large blueprints from scratch again a couple of times rather than migrate them from another project because i cannot get rid of the references necessary in order to be able to migrate the specific blueprint only, without migrating large portions of my project.

As someone learning the engine on their own, it really hinders learning and discoverability with blueprints, as it prevents me from trying things out because I’m afraid I won’t be able to delete what I’ve done out my project later on. Yeah I can work on a copy of my project when trying something new, but in practice I can’t always do that either because it’s still going to be difficult to migrate if i get it working, and who wants to always be working on a copy of their project all the time.

I really wish there was a way to just view the actual references and be able to disconnect them cleanly right from the object i wish to delete or migrate, but maybe there is some easier way out there that I don’t know about since I’m trying this on my own and don’t have an experienced person to just tell me the right way.

End rant. Anyone has any tips for me, they’d be much appreciated.