I followed a great tutorial on simple setup of persistent level to make level transitions smoother: Unreal Engine 4 - Easy Loading Screen Tutorial - Blueprints Only - YouTube. I went back through and made sure everything I did matched what was done in the tutorial. The only difference is it is in 3rd person mode and I’m doing Top Down Mouse to Move.
The issue is at the end of the setup when I Play through the persistent level when I land at the player start on Level 1 I can’t move. The mouse cursor shows as if I could be no input is happening. When I load Level 1 manually and click play I’m able to move with no issues. I’m not sure which BP to show to give more info on the issue as I’m using the default TopDownCharacter BP and I have an empty project besides two sub levels under a persistent level. I’ve added my PersistentLevel BP because it is the one I’ve manipulated most. Let me know what information I can share to better clarify.
I must say, it looks a bit convoluted. To get it working I’d suggest cutting it down to almost nothing, just the stream level from the game instance.
Just have a custom event you can call in the GI which will stream a level given the name. When you get to the end of level 1, just cast the GI and call MyCustomEvent( Level 2 ). The event in the GI, can just be:
Thanks for the reply. Thank you for really simplifying that for me. I liked the loading screen but I was having a hard time following the core concept with all the extra things going on. It seems to be working as expected minus 1 thing.
When I load Level2 I lose my ability to control the character (using TopDown “mouse click to move”). Is there somewhere I need to call PlayerController?
Here is what I have so far for BPs set up to change levels:
Your character and controller exist in the persistent, so nothing needs to happen there. The levels just load and unload around you.
I’m wondering if moving that plane is blocking your character of something.
I mean the persistent can be the demo level if you like, and level 1 and level 2 can just have a sphere and a cube in respectively. You carry on existing in the persistent.
I removed the collision from the plane and also added a vector offset from where I teleport to that places me away from the plane. Still no control. Checked Navmesh bounds and everything is good there, it shouldn’t make any difference if there are separate Navmesh bounds for each level right? This is so strange, I can see the cursor but no movement input appears to be received.
Edit: I removed the teleport portion and just had Level 2 be “under” Level 1 so when the unload and load happens the character drops down onto Level 2. Still have no character control when Level 2 loads. I’m stumped.
Thanks for the heads up on notifications when quoting, sorry about that. Well when I modify the size of the NavMeshBounds my character can’t move further then the limits so I’m not sure about it being only for AI. I am using the Default TopDown Character/Controller which is click to move yes.
To test your theory I deleted “Level2” and made a copy of Level1 to act as the new Level2. Performing the unloading of Level1 and loading of Level2 causes the same result. I land on the newly loaded level without the ability to move around.
EDIT: Well I feel bad saying this was the solution but while experimenting I deleted NavMesh on Level2 and expanded Level1 Navmesh to cover both. That didn’t work. However when I replaced the NavMesh on Level2 and played the level from persistent level it works.
Clockwork, thanks for all your help and giving a great intro to level transitions explanation.
Yes, all streaming is, is a way of loading more stuff ( or unloading ) into the the persistent. Maybe you had two nav meshes? ( shooting in the dark there ).
Anyway, now it will be easy to put the loading screen in if you want.