A few things I can see might be issues.
-
Is there a ThirdPersonCharacter in the level at the time you are selecting the “play button”? If not that first cast will always fail. So if this is simply a “main menu” widget in an empty level you don’t need that cast. Although the way you have it set-up is a little odd so in your case you would actually need to place a character in the level somewhere even if it isn’t visible just to be able to access the data variable of the level from the character BP. And if that is the case the issue with that is, the character isn’t going to be able to “save” anything in that variable between levels, it is instanced each time the level opens so would only have default values.
-
You are loading a save game object then saving the output as a variable BEFORE casting it to a specific type so this :save game object" will not be your specific type and therefore that variable is useless when trying to access the variables of your specific save game object (levelsavingsavegame). You got around this by then immediately casting that variable to your “levelsavingsavegame” but the entire process is convoluted and redundant. You should do the cast immediately after the load and then save the output of the cast node instead.
-
You have 2 different variables for the “slot” FYI, in the third person character BP you call it “Save Game SLOTName” but when you pull it out to use in the menu widget you are getting “Save Game FILE Name” are you aware of this? I am not sure why you would have 2 different variables for that.
Anyway, off the bat I would say any one of those or a combination of those issues is why nothing works ha