Transition Map Problem

I have the Transition Map set to the correct map in the project settings and I have the level blueprint print a string to the screen and display my loading screen widget as in the video, but when I play the game, I only get a black screen while the map loads. Not even my print string shows up. It is like the BeginPlay node is never being run.

https://answers.unrealengine.com/questions/376981/411-transition-map-tick-broken.html
It looks like this is a bug. The transition map doesn’t load anything.

It might be that it loads to quick to tick?

What do you mean that it loads to quick to tick? Shouldn’t tick be running as long as the map is open? My level takes several seconds to load yet nothing ever gets called in the transition map, whether it is in the level blueprint or on an actor in the level. So I don’t believe that the method described in the lectures works as described. The UMG widget made with “loading” text will never be displayed, no matter how long the map takes to load, you’ll just get the black screen of the transition level.

Hmm, indeed that sounds like the transition map isn’t coming up at all. Are you use you are using seamless travel?

Yeah. I’m using seamless travel.

The solution I ended up with though is displaying the loading widget before the transition scene is loaded, and then tearing it down when the level loaded.

The link I posted above confirms that Transition Map tick/begin play was broken in older versions of Unreal, and I believe that it is still broken.

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.

@sgyffy If I may ask - have you tried using GameInstance::BeginLoadingScreen and GameInstance::EndLoadingScreen?

I currently have this set up:

void UTL6_PuzzleIOGameInstance::Init()
{
	Super::Init();
 
	// Displays a simple loading widget while any level loads
	FCoreUObjectDelegates::PreLoadMap.AddUObject(this, &UTL6_PuzzleIOGameInstance::BeginLoadingScreen);
	FCoreUObjectDelegates::PostLoadMapWithWorld.AddUObject(this, &UTL6_PuzzleIOGameInstance::EndLoadingScreen);

	InitializeOnlineSessionInterface();
}

…

void UTL6_PuzzleIOGameInstance::BeginLoadingScreen(const FString& InMapName)
{
	if (!IsRunningDedicatedServer())
	{
 		FLoadingScreenAttributes LoadingScreen;
	 	LoadingScreen.bAutoCompleteWhenLoadingCompletes = false;
 		LoadingScreen.WidgetLoadingScreen = FLoadingScreenAttributes::NewTestLoadingScreenWidget();
 
	 	GetMoviePlayer()->SetupLoadingScreen(LoadingScreen);
    }
}
 
void UTL6_PuzzleIOGameInstance::EndLoadingScreen(UWorld* InLoadedWorld)
{
	/// can be overriden to have custom effects
}

Pros: It’s a legit loading screen, and I’ve never looked back from here.

Cons: The initial setup. You need to add MoviePlayer to either the Public or Private Dependency Module Names in your *.Build.cs file, and add the MoviePlayer.h header file to the GameInstance class.

I referred this: https://wiki.unrealengine.com/Loading_Screen. I assume this doesn’t use Level Streaming for now, but I’ll investigate if I find that I’m wrong.

I’d definitely enjoy hearing about your implementation in greater detail.

2 Likes

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.

Privacy & Terms