void LoadUpgradesFromPrefsAndJson() {
     playerUpgradeMoney = PlayerUpgradeMoney.instance;
     List<Upgrade> upgradesLoaded = null;
     if (PlayerPrefs.HasKey(PLAYER_PREFS_KEY)) {
         upgradesLoaded = SaveTools.LoadFromPlayerPrefs(PLAYER_PREFS_KEY) as List<Upgrade>;
     } else {
         Debug.Log("First load, no upgrades found in player prefs");
     }
     _Upgrades = new List<Upgrade>();
     TextAsset upgradesTextAsset = (TextAsset)Resources.Load("upgrades", typeof(TextAsset));
     JSONObject upgradesJsonRoot = new JSONObject(upgradesTextAsset.text);
     JSONObject upgradesJson = upgradesJsonRoot.list[upgradesJsonRoot.keys.IndexOf("upgrades")];
     upgradesJson.list.ForEach(u => _Upgrades.Add(new Upgrade(u)));
     if (upgradesLoaded != null) {
         _Upgrades.ForEach(u => {
             Upgrade upgradeFromPlayerPrefs = upgradesLoaded.Find(e => e.name == u.name);
             if (upgradeFromPlayerPrefs != null) {
                 u.bought = upgradeFromPlayerPrefs.bought;
             }
         });
     }
 }
 void Awake()
 {
     instance = this;
 }