I have a payment system for my game set up here's my code :
void Start()
{
T55.interactable = false;
Tiger2.interactable = false;
Cobra.interactable = false;
}
public void ProcessPurchase (ShopItem item)
{
if(item .SKU =="tank")
{
StoreHandler .Instance .Consume (item );
}
}
public void OnConsumeFinished (ShopItem item)
{
if(item .SKU =="tank")
{
T55.interactable = true;
Tiger2.interactable = true;
Cobra.interactable = true;
}
}
Now each time the player buy something in the game the intractability of my 3 buttons goes to true; but the problem is each time he closes the game the intractability goes back to false how.
Should I save the process so the player doesn't have to buy again to set them back to true?
PlayerPrefs does not have an overload for a boolean type. It only supports string, int and float.
You need to make a function that converts true to 1 and false to 0 then the the PlayerPrefs.SetInt and PlayerPrefs.GetInt overload that takes int type.
Something like this:
int boolToInt(bool val)
{
if (val)
return 1;
else
return 0;
}
bool intToBool(int val)
{
if (val != 0)
return true;
else
return false;
}
Now, you can easily save bool to PlayerPrefs.
void saveData()
{
PlayerPrefs.SetInt("T55", boolToInt(T55.interactable));
PlayerPrefs.SetInt("Tiger2", boolToInt(T55.interactable));
PlayerPrefs.SetInt("Cobra", boolToInt(T55.interactable));
}
void loadData()
{
T55.interactable = intToBool(PlayerPrefs.GetInt("T55", 0));
Tiger2.interactable = intToBool(PlayerPrefs.GetInt("Tiger2", 0));
Cobra.interactable = intToBool(PlayerPrefs.GetInt("Cobra", 0));
}
If you have many variables to save, use Json and PlayerPrefs instead of saving and loading them individually. Here is how to do that.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With