So I’ve been through some tutorials looking at how to use level streaming in blueprints to load a level. If I use the “open level” node, I’m able to open up a new map/level. But if I try to load that same map/level using load level stream, my screen remains black, even though the level appears to be loaded and visible. I’m not sure what I’m doing wrong. Has anyone else had an issue like this before?
Hey there, why do you want to load the same level with level streaming?
So as my game is right now, there’s a main menu level which is empty, and crates/adds to viewport a main menu widget. The player can open a drop down widget in the main menu widget to select a level name (such as “island”, or “desert”), and then click a start button. When they click start, the main menu level blueprint calls open level with the name of the level selected, and the level is loaded successfully.
I want to change this to behave as follows:
when the player selects a level in the drop down, instead of the player having to click start to see the level, I want the level to load immediately, and the player can see the level behind the transparent main menu after the load is complete. If they want, they can open the drop down menu and pick other levels to see them before they hit start. When they find one they like, they can press start to begin playing. When they start playing, the main menu widget is hidden.
So basically, it seems like the main menu level should be a persistent level and all the other levels should be streaming levels that can be loaded in and out as the player checks them out.
In the main menu level, I have added the sub levels to the levels window so that it looks like this:
persistent level island map desert map ...
However, if I toggle the eye icon (visibility icon) next to any of the sublevels like island or desert, I still see black screen on the play editor. When I start playing the game, and I use the drop down menu to select levels to stream in/out, it’s also black. I’m pretty sure I have the blueprint logic right. Even if the blueprint logic was wrong, it’s weird that I can try to toggle the visiblity of the sublevels, and the main menu level in the editor is still blank. It’s only if I use the “open level” node in the menu level blueprint that I can actually go to the level. I don’t get why streaming the level doesn’t work
Can you show me your blueprint code?
I’ve attached a blueprint with the game name crossed off in case I’m not supposed to give the game name out for whatever reason. I confirmed via print string that the load level event does fire whenever I select a level in the menu.
I think I figured out what’s going on though: If I’m trying to stream a level called “island.umap”, island itself is a level that contains a blank persistent level, and other sublevels such as island_lighting.umap, island_actors.umap, etc. I realized using print statements that when the main menu level is loading in the level “island” via a load level stream node, unreal only loads in the persistent level of the island, which is blank, and none of the sub levels of island, even if all the sublevels are set to “always loaded” in the levels window. So… I need to manually load in the level, and all of the children. I’ll give that a shot and post an update if that works.
The levels that you have created were they created in the same world location? When you use Load Stream level he places the world in its original location, if you have the camera facing another direction, maybe the level loaded (you can confirm this by using the stat levels console command) but you just can’t see it. You can also eject from the camera and look around to see if the level is someplace else by using F8.
Hey , thank you for the help. It turned out to be what I was thinking that whenever I tried to load a level like “island”, only the persistent level of “island” wold be loaded, and not the sublevels within island. Additionally, if you try to load level stream a level while another level is loading, then the load level stream requests are ignored until the first load level stream is complete. Based on this, for each and every level I wanted to be able to load, I stored an array of sublevel names, and also stored those sublevels in the levels window of my main menu blue print. When iterating through the array of level names, I used a delay to make sure that the blueprint would wait until 1 sub level is loaded before continuing to load the next sublevel. Here are the 2 blue prints I ended up using to finally be able to load the levels incase they’re helpful to anyone.
If its fixed please mark your answer as correct to close it