我为我的游戏设置了支付系统,这是我的代码:
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;
}
}
现在,每当玩家在游戏中购买东西时,我的 3 个按钮的棘手性都会变为真;但问题是每次他关闭游戏时,棘手性都会回到错误状态。
我应该保存这个过程,这样玩家就不必再次购买来将它们设置回 true 了吗?
最佳答案
PlayerPrefs没有 bool 类型的重载。它只支持字符串、整数和 float 。
你需要做一个函数来转换true
至 1
和 false
至 0
然后PlayerPrefs.SetInt
和 PlayerPrefs.GetInt
需要 int
的过载类型。
像这样:
int boolToInt(bool val)
{
if (val)
return 1;
else
return 0;
}
bool intToBool(int val)
{
if (val != 0)
return true;
else
return false;
}
现在,您可以轻松保存 bool
至 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));
}
如果您有很多变量要保存,请使用 Json 和 PlayerPrefs 而不是单独保存和加载它们。 Here是如何做到这一点。
关于c# - 如何将 bool 保存到 PlayerPrefs Unity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41073236/