This has little to do with text and widgets.
Here’s the thing - function binds execute every frame. If you’re playing the game at 60fps, you’re loading your game 60x every second. Does not sound right, right?
While this is exceptionally flawed and inefficient, it should work, technically. Here it does not because the cast fails (put a print string node there and see if it prints).
The cast may fail for 2 reasons here:
- the Save Game object does not exist
- the Save Game object is not of the type you’re casting to
Ensure the save game object does exist - how (and when) is this data created and saved?
Also, load the game once, when the widget gets constructed or when the level opens.