In addition to bug tracked @ Unreal Engine Issues and Bug Tracker (UE-203175) - Reference UE-203175 When attempting to play a movie at the start of a packaged game, when implementing the plugin PreLoadScreen, the Movie no longer loads, with the error message Error: Only one system can use the SlateThread at the same time. GetMoviePlayer is not compatible with PreLoadScreen.
Please select what you are reporting on:
Creative
What Type of Bug are you experiencing?
Stability
Steps to Reproduce
Add PreLoadScreen plugin to a Unreal Engine project from any template in Unreal 5.5.
Add a movie and set it up in the project settings using the published method of Unreal Engine 5.5
Package the game in development or shipping
Expected Result
Movie plays at start of game launch sequence
Observed Result
No movie plays - Error reference Slate thread collision
A way around this problem, if you are using CommonLoadingScreen and don’t need CommonStartupLoadingScreen, is to extend it so it doesn’t activate while the movie player is running. Here’s what we did:
Use Bink instead of the conventional Windows Media Player, this is just an improvement overall. See Unreal’s Bink documentation
Disable CommonStartupLoadingScreen; Simply change the LoadingPhase to “None” on CommonLoadingScreen.uplugin
Update the LoadingScreenManager to not run if the Movie Player is active:
You’ll need to fiddle a bit with C++:
At ULoadingScreenManager::ShouldShowLoadingScreen
bool ULoadingScreenManager::ShouldShowLoadingScreen()
{
...
// This snippet will prevent the loading screen manager
// from coming up if you are playing a movie. Do it early in this function.
if (IGameMoviePlayer* MoviePlayer = GetMoviePlayer())
{
if (MoviePlayer->IsMovieCurrentlyPlaying())
{
DebugReasonForShowingOrHidingLoadingScreen = FString(TEXT("A movie is playing"));
return false;
}
}
...
This shall allow you to play your intro movie smoothly and show your level loading widget immediately afterwards (or if the movie is interrupted)