Loading Screen Widget Only Ticks if Moving Mouse

I’ve been working on a loading screen for a game and I’ve encontered a few issues while working on it. I managed to create a new UUserWidget for the Loading Screen for a Blueprint and assign it to the Movie Player successfully (Widget Created using a New Temporary World), however, the Widget itself has animations and a Tick function and those are only executing if I keep moving my mouse over the window, otherwise, the widget just completely stops it’s animation. Once the Movie Player adds the Widget, there is brief moment where I can see the animations working before they completely stop working.
I used normal method for creating loading screens with C++ (Movie Player), the only difference is that I am using a Blueprint Widget that I get the class from a dynamic reference from a config variable and then I use TakeWidget to get the SWidget reference.

// Create world if invalid.
if (!LoadingScreenWorld) {
 LoadingScreenWorld = UWorld::CreateWorld(EWorldType::Game, true, FName("LoadingScreen"), GetTransientPackage());
 GEngine->CreateNewWorldContext(EWorldType::Game).SetCurrentWorld(LoadingScreenWorld);
}

// Set Widget.
if (Settings->LoadingScreenWidget.Get() != nullptr)
 Attributes.WidgetLoadingScreen = CreateWidget<UUserWidget>(LoadingScreenWorld, Settings->LoadingScreenWidget.Get())->TakeWidget();

I’m having the same issue on my end. No resolution found yet, but the ticking seems to stop if you’re keeping the loading screen for an amount of time longer than it needs to load everything. It seems to get ticked while actual loading is going on, but not when the screen is just being kept around. My loading screen is implemented 100% in Slate C++, so I doubt it’s related to your use of UUserWidget.

I’ve found the solution to this issue. It looks like Slate automatically sleeps the loading screen widget and stops ticking it after the map is loaded, unless there’s user input OR if there’s an active timer bound to the widget. Reading the article below and registering and active timer on my loading screen solved the issue for me.

Hope this helps!