About Playerprefs Save & Load
Hi.
I'm currently making 2d clicker game.
I'm having issue with Playerprefs.
What I'm trying to do is " Click [button A] and when [button A] is clicked, it becomes disabled and [button B] becomes enabled. When I quit my game, I want the button state saved "
Everything works fine except saving.
My game is played on the android, and it always saves when I quit my game.
But when I click my buttons and found them work good, it doesn't save the data.
I'm saving my data on the DataController(Which I made with Empty game object).
BGM Buying button script
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class BGMBuy : MonoBehaviour {
public AudioSource sound;
public string bgmName;
public Button BGM;
public Button Disabled;
public int currentCost;
[HideInInspector]
public int butdisable;
public bool bought;
void Start()
{
DataController.Instance.LoadBGMBuy (this);
bought = false;
}
public void PurchaseMusic ()
{
if (DataController.Instance.gold >= currentCost)
{
if (bought == false)
{
DataController.Instance.gold -= currentCost;
PlayerPrefs.SetInt ("butdisable", 1);
sound.Play ();
BGM.interactable = true;
Disabled.interactable = false;
DataController.Instance.SaveBGMBuy (this);
}
else
{
Disabled.interactable = true;
}
}
}
}
DataController script ( You need to look at LoadBGMBuy ~ SaveBGMBuy at the below. Everything works fine except that part)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DataController : MonoBehaviour {
private static DataController instance;
public static DataController Instance
{
get
{
if (instance == null)
{
instance = FindObjectOfType<DataController> ();
if (instance == null)
{
GameObject container = new GameObject ("DataController");
instance = container.AddComponent<DataController> ();
}
}
return instance;
}
}
private ItemButton[] itemButtons;
public long gold
{
get
{
if (!PlayerPrefs.HasKey ("Gold"))
{
return 0;
}
string tmpGold = PlayerPrefs.GetString ("Gold");
return long.Parse (tmpGold);
}
set
{
PlayerPrefs.SetString ("Gold", value.ToString());
}
}
public int goldPerClick
{
get
{
return PlayerPrefs.GetInt("GoldPerClick",1);
}
set
{
PlayerPrefs.SetInt ("GoldPerClick", value);
}
}
void Awake()
{
//PlayerPrefs.DeleteAll ();
itemButtons = FindObjectsOfType <ItemButton> ();
}
public void LoadUpgradeButton(UpgradeButton upgradeButton)
{
string key = upgradeButton.upgradeName;
upgradeButton.level = PlayerPrefs.GetInt (key + "_level", 1);
upgradeButton.goldByUpgrade = PlayerPrefs.GetInt (key + "_goldByUpgrade", upgradeButton.startGoldByUpgrade);
upgradeButton.currentCost = PlayerPrefs.GetInt (key + "_cost", upgradeButton.startCurrentCost);
}
public void SaveUpgradeButton(UpgradeButton upgradeButton)
{
string key = upgradeButton.upgradeName;
PlayerPrefs.SetInt (key + "_level", upgradeButton.level);
PlayerPrefs.SetInt (key + "_goldByUpgrade", upgradeButton.goldByUpgrade);
PlayerPrefs.SetInt (key + "_cost", upgradeButton.currentCost);
}
public void LoadItemButton(ItemButton itemButton)
{
string key = itemButton.itemName;
itemButton.level = PlayerPrefs.GetInt(key + "_level");
itemButton.currentCost = PlayerPrefs.GetInt (key + "_cost", itemButton.startCurrentCost);
itemButton.goldPerSec = PlayerPrefs.GetInt (key + "_goldPerSec");
if (PlayerPrefs.GetInt (key + "_isPurchased") == 1)
{
itemButton.isPurchased = true;
}
else
{
itemButton.isPurchased = false;
}
}
public void SaveItemButton(ItemButton itemButton)
{
string key = itemButton.itemName;
PlayerPrefs.SetInt(key + "_level",itemButton.level);
PlayerPrefs.SetInt (key + "_cost", itemButton.currentCost);
PlayerPrefs.SetInt (key + "_goldPerSec",itemButton.goldPerSec);
if (itemButton.isPurchased == true)
{
PlayerPrefs.SetInt (key + "_isPurchased", 1);
}
else
{
PlayerPrefs.SetInt (key + "_isPurchased", 0);
}
}
public int GetGoldPerSec()
{
int goldPerSec = 0;
for (int i = 0; i < itemButtons.Length; i++)
{
goldPerSec += itemButtons [i].goldPerSec;
}
return goldPerSec;
}
public void LoadBGMBuy(BGMBuy bgmBuy)
{
string key = bgmBuy.bgmName;
bgmBuy.butdisable = PlayerPrefs.GetInt (key + "bought");
if(bgmBuy.bought == true)
{
PlayerPrefs.GetInt (key + "_bought",1);
}
else
{
PlayerPrefs.GetInt (key + "_bought",0) ;
}
}
public void SaveBGMBuy(BGMBuy bgmBuy)
{
string key = bgmBuy.bgmName;
PlayerPrefs.SetInt (key + "_bought", bgmBuy.butdisable);
if(bgmBuy.bought == true)
{
PlayerPrefs.SetInt (key + "_bought",1);
}
else
{
PlayerPrefs.SetInt (key + "_bought",0) ;
}
}
}
Your answer
![](https://koobas.hobune.stream/wayback/20220612145244im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
How to save my gold when i quit the game 1 Answer
Saving item count with Playerprefs 1 Answer
Save button state using Playerprefs 0 Answers
How to save the state of Canvases/Toggles? 1 Answer
A Little Help With Player Prefs 0 Answers