Saving/Loading is never simple.
There’s tons of tutorials out there on Youtube to give you an idea of the process.
Basically step 1 is identify what needs to be saved. Might just be a single digit, as in “what level am I on?” Might be a lot more: GameObjects, inventories, internal states of running scripts, positions, rotations, etc.
Keep in mind the more you save the more debugging and painstaking engineering you’re going to need to do. And it gets really hairy.
Step 2 - design a data structure to hold all the above data, as well as enough extra data to restore it on LOAD (i.e., a foolproof way of moving the data back to whoever originally asked for it to be saved).
Step 3 - design and implement something to iterate the stuff you want to save and extract that into the data structure
Step 4 - easy : write it to disk (generally use JSON for serialization)
On load, it’s the opposite:
Step 1 - read structure from disk into memory
Step 2 - iterate all data, reinject it into the running game. This might take multiple steps: iterate some data to figure out what scene(s) to load, then load that scene(s), then iterate the rest of the data to inject it into the running scene, possibly even creating additional GameObjects in the scene based on the save data.
Step 3 - let the game run!
Let me just add that with ALL such massive engineering efforts, start small. Savegame system version 1 should just save and restore your score, or something equally trivial.
But get that working and prove out ALL steps from extracting, storing, writing, reading, restoring, restarting, and do so with very simple data, and only then start to add the next piece, such as your gold or or what scene you are on, or whatever is next to save.