c# - 如何将 bool 保存到 PlayerPrefs Unity

标签 c# unity3d save payment

我为我的游戏设置了支付系统,这是我的代码:

 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 。

你需要做一个函数来转换true1false0然后PlayerPrefs.SetIntPlayerPrefs.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;
}

现在,您可以轻松保存 boolPlayerPrefs .

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/

相关文章:

file - 如何将原始 RTSP 流转储到文件?

django - 从 ModelForm 保存数据

c# - RAM获取帧的使用

c# - 在 C# 中实现 ISP 设计模式

c# - C#/WPF 中的选项卡式界面

c# - string.Format(..., double) 后跟 double.Parse 使用相同的 NumberFormatInfo 会导致 FormatException。为什么?

unity3d - 用纹理填充贝塞尔曲线之间的区域

c# - 正确的 Resource.Load 路径是什么?

android - 如何在 Unity 中减小 APK 文件的大小?

javascript - 在本地保存 d3js 图