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