我为我的游戏设置了一个支付系统,这是我的代码:
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?
发布于 2016-12-10 16:10:20
PlayerPrefs没有布尔类型的重载。仅支持string、int和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是如何做到这一点的。
发布于 2018-01-16 22:14:08
这要快得多
var foo = true;
// Save boolean using PlayerPrefs
PlayerPrefs.SetInt("foo", foo?1:0);
// Get boolean using PlayerPrefs
foo = PlayerPrefs.GetInt("foo")==1?true:false;
来源:here
发布于 2019-01-11 07:16:12
我写这个答案是因为有些人还需要这个答案,而且我认为比上面的其他答案更容易。
要保存:
PlayerPrefs.SetInt("Mute_FX", mute ? 1 : 0);
要加载,请执行以下操作:
PlayerPrefs.GetInt("Mute_FX") == 1 ? true : false;
如果您不了解发生了什么,我建议您阅读有关C#中的三元运算符的内容。
编辑:我没有看到穆罕默德·萨利赫的回答,但这是一样的。
https://stackoverflow.com/questions/41073236
复制相似问题