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 theLoadingPhaseto “None” onCommonLoadingScreen.uplugin - Update the
LoadingScreenManagerto 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)
Hope this helps!