You ought to create a GameManagerObject, and make it a singleton with Don't Destroy on Load, and use it to store all variables when loading new scenes.
For things that manage stuff like controllers, variables etc make it a singleton, what that means is that there will be only one instance of that script/object active at all times. There is a singleton action on the Ecosystem.
The game manager serves as a 'bridge' between scenes, and a starting point for all variables being set. ie - when you play your game, you get all your objects that require variables to 'get' the variables from the GameManager, then 'set' the variables on the FSMs, then when you load a new scene, get all your FSMs to 're-set' the variables back on the GameManager before loading the new scene. When the new scene loads, the same steps are followed - get all the FSMs to 'get' the variables from the GameManager etc etc.
The game manager is never destroyed, and carries variables from one scene to another. It's a really handy thing, because as your game develops, you'll find yourself wanting to carry more than just Health from one scene to another. Once you get your head around it, it's super easy to transfer any variable, and actually opens up creative options because you're not restricted.
I've just had a quick look at my GameManagerObject in the game I'm building and it currently carries 61 variables from scene to scene, including Health, Inventory, Tech-tree progress, weapons, fuel, shields, shield efficiency, etc etc etc etc.
Check out this video... I'm not sure if he has the Singleton action included, I've only just skimmed through it, but yeah, singleton is important.
Make a GameManagerObject

A really simple FSM to set it up...

Most importantly, the object 'gets itself' and stores itself as a variable (GameObject) and this variable is set to Global.

