如何将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.SetInt
和PlayerPrefs.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;
来自这里