下载更新时保存的可编脚对象会发生什么?

时间:2016-06-06 12:22:28

标签: c# unity3d updates unity5

所以我有一些可编写脚本的对象,暂时存储一些信息并在运行时更改bool。

我希望这个bool在会话之间持续存在。没有更新它当然没有这个。

然而,假设我启动了当前版本,并且用户使用游戏,并将一些bool从false设置为true。如果我发布更新,那么更新将使所有bool默认为false,当他们应用更新时,他们会丢失他们在任何可编写脚本的对象上设置的真值吗?

如果没有,你能解释为什么不是这种情况,因为我不明白这是怎么回事?

如果是这样,那么我认为最好的解决方案是存储一个可编写脚本的对象列表,这些对象的bool设置为true,并在执行时根据需要重置这些对象?有什么更优雅的吗?

1 个答案:

答案 0 :(得分:0)

使用PlayerPrefs存储bool。下一个会话启动时,首先要检查驱动器上是否存在bool。如果是,请加载它并使用加载的bool覆盖默认bool

如果bool不存在,请保存下一次的当前默认bool。在游戏存在(OnDisable)或其他类似的回调函数时,保存bool。这就是你要做的一切。它会一直存在,直到调用PlayerPrefs.DeleteAllPlayerPrefs.DeleteKey来清除它。

下面是一个完整的例子。它会检查声音是否已启用并且评论得很好:

bool soundOn = false;

//Check if soundOn key Exist (return -1 if it doesn't exist)
if (PlayerPrefs.GetInt("soundOn", -1) == -1)
{
    //It doesn't exist. Now save the current value
    if (soundOn)
    {
        PlayerPrefs.SetInt("soundOn", 1);
    }
    else
    {
        PlayerPrefs.SetInt("soundOn", 0);
    }
    PlayerPrefs.Save();
}
//soundOn key Exist. Now Load it and override soundOn bool
else
{
    int tempBool = PlayerPrefs.GetInt("soundOn");
    if (tempBool == 0)
    {
        soundOn = false;

    }
    else if (tempBool == 1)
    {
        soundOn = true;
    }
}

您可以将其转换为可重复使用的功能,并且可以使用任何变量。