So I made this setup quite quickly.
It’s purpose is to show you how you could approach this kind of thing, there are probably some other ways to do this.
I made a new blueprint class and searched for “SaveGame” to get the class, selected it and called it MySaveGame.
This is where I store and save which levels are unlocked or locked.
http://i.imgur.com/3LhCCqC.png
Inside the SaveGame Blueprint I made two boolean variables.
Level2Unlocked and Level3Unlocked, you can repeat this for all your Levels (except Level 1)
Make sure you click the eye to the right of their name to make them public.
http://i.imgur.com/oCXpq0Y.png
The next thing I made is a menu for the level select. You have this already but you’ll need to change the blueprint for my system to work.
Mine is just super simple like that:
http://i.imgur.com/17bIcjr.png
In the Graph of this Widget, I first check if we already have a Save Slot, if not I force it to make one, then load the game from this slot to get variables stored in there.
http://i.imgur.com/iqSyPG3.png
Cast To MySaveGame is there to get a reference to get to the content of the save game.
In the next step, I hooked up the buttons.
http://i.imgur.com/FXICUA7.png
The button for the first level doesn’t check any variable. The second and third button both check the validity of the save game to make sure “MySaveGame” has been created at this point.
This uses the reference I made earlier via casting.
Then, if the Bool for a level inside the save game is true, I can open the level.
The last button will delete the save:
http://i.imgur.com/fog6A2T.png
The last step is to unlock the next level, I used a trigger box at the end of each level, like this:
http://i.imgur.com/BzfT2pf.png