My Widget BPs using the CommonUI plugin classes all seem to be breaking, losing their parent class and becoming unopenable.
Initially I thought this happened because I accidentally opened a Common UI class in Live Code and closed the project without compiling it, but I reparented all my classes manually using an Editor Widget someone made and fixed all the references last night and it seemed to be working. Today I opened the project and everything is broken again…
Similar to other users here in this thread:
Does anyone have a solution? Is there a way to change the CommonUI plugin load order if that is somehow a problem? Is CommonUI still being supported/extended by Epic, or should I look into other solutions?
I’ve been running into this too very recently, in 5.3.2. First time it happened I was able to roll back to a couple hours prior and everything was fine. Recreated my work without issue and it was fine thereafter.
The next day it was still good, but again after a couple hours of widget work, I ran into the same problem - tried to package the game and hit build errors. Rebooted the editor and hit the same “Failed to load Outer” spam. I haven’t done anything fishy or used Live Coding.
Okay, I spent a good bit of today trying to reproduce this issue, and learned some things. This is really hard to test because it fails invisibly, but you can check if you’re in a good state by attempting to package your project. If the build fails, you know you’re hosed. I actually narrowed it down to a fairly specific step for me by making changes slowly and packaging between.
In my case I can trigger the issue by having my Game Instance blueprint contain ANY reference to a class that calls Create Widget if the widget in question derives from a CommonUI class. For example, if I create a new actor BP, and put this in the event graph:
The widget I’m trying to create here is based on CommonActivatableWidget, and now this actor is radioactive. If I simply create a variable in my GameInstance BP that is an object reference of this actor? Packaging fails, project is screwed up if I save and reopen. Any reference will do, including casting to the offending actor, or referencing another class that references this actor.
Why is my GameInstance uniquely screwed up by this? I’m not sure. Maybe other classes are too, but I tried having other actors, my game mode, and a few others reference Create Widget and it’s totally fine.
I’m not 100% sure this is the only way this problem can emerge, but at least I’ve isolated a repro in my project.
Just tested this two different ways and yes, Create Widget using any CommonUI derived BP breaks everything and makes any other classes referencing it break too, so radioactive is accurate.
With my Canvas class being created it broke my Main and Pause Menu BPs as well.
With my Pause menu alone it only broke that BP.
This does mean CommonUI is useless for my project I guess.
Seems like we should file an actual bug report to Epic? Someone was saying that CommonUI was relatively abandoned, but I still see stuff for it on the Roadmap and it does work better than standard widgets, but I guess for now I will have to go back to default UI.
When you repro’d it yourself, was your GameInstance referencing the radioactive class?
That seems to be the only way to break it for me. I can have all manner of other classes referencing something that creates CommonUI widgets without issue. If you’ve found another way though, do let me know - I am now extremely untrusting of this whole plugin and will be walking on eggshells for the rest of my development.
In my proejct, I almost never have the GameInstance reference other classes - it primarily acts as a store of data that other classes read/write from, so avoiding this specific interaction is totally possible for me. I worry there are other landmines though.
Adding one more data point for anyone else who finds themselves here:
I tried making a brand new project and tried to build the bare minimum to get this to happen again, and couldn’t get it to happen. I made a new GameInstance, a new Common UI widget, and had them reference each other the same way as my “real” project and… no problems at all?
So yeah, I have no idea. I really only wanted the native controller support from Common UI, but I think for my next project I’ll roll my own solution as this plugin is clearly unstable.
I’m not really sure whether GameInstance gets a reference when this happens, but I just have a Common UI Activatable Widget Stack being added to the viewport, or any Common UI Activatable Widget, from my main FirstPersonCharacter BP and that breaks everything.