如何将bool保存到PlayerPrefs Unity

我的游戏设置支付系统是我的代码:

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个按钮的难度就变为真; 但问题是每次他关闭游戏时,难以解决的问题都会变回虚假状态。

我应该保存这个过程,以便玩家不必再次购买以将其设置为真实吗?

PlayerPrefs没有布尔类型的重载。 它只支持string,int和float。

您需要创建一个将true转换为1并将false转换为0的函数,然后生成采用int类型的PlayerPrefs.SetIntPlayerPrefs.GetInt重载。

像这样的东西:

 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而不是单独保存和加载它们。 这是怎么做的。

这要快得多

 var foo = true; // Save boolean using PlayerPrefs PlayerPrefs.SetInt("foo", foo?1:0); // Get boolean using PlayerPrefs foo = PlayerPrefs.GetInt("foo")==1?true:false; 

来自这里