I think you'll have to use both methods.
For example you load a level and use save to load all objects if they are not destroyed. Right after that it is better to load the main variables like gold, armor and damage of the hero and his level. Only then release the hero into the world.
Why would you want to store important hero characteristics in local storage and load it after the world? Because your hero can change these parameters on other layouts, for example, entered a mech or dungeon and found something there or pumped.
From my experience I will say that the save system is not visible to the player, but it is a very important and time-consuming step for the developer. I always use local storage and storage in arrays. When I add a new event or boss in the game I always understand how it will be stored, for example, regular respawn, then do not need to store or space in an array with the number of his kills.