所以我有一些可编写脚本的对象,暂时存储一些信息并在运行时更改bool。
我希望这个bool在会话之间持续存在。没有更新它当然没有这个。
然而,假设我启动了当前版本,并且用户使用游戏,并将一些bool从false设置为true。如果我发布更新,那么更新将使所有bool默认为false,当他们应用更新时,他们会丢失他们在任何可编写脚本的对象上设置的真值吗?
如果没有,你能解释为什么不是这种情况,因为我不明白这是怎么回事?
如果是这样,那么我认为最好的解决方案是存储一个可编写脚本的对象列表,这些对象的bool设置为true,并在执行时根据需要重置这些对象?有什么更优雅的吗?
答案 0 :(得分:0)
使用PlayerPrefs
存储bool。下一个会话启动时,首先要检查驱动器上是否存在bool
。如果是,请加载它并使用加载的bool
覆盖默认bool
。
如果bool
不存在,请保存下一次的当前默认bool
。在游戏存在(OnDisable)或其他类似的回调函数时,保存bool。这就是你要做的一切。它会一直存在,直到调用PlayerPrefs.DeleteAll
或PlayerPrefs.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;
}
}
您可以将其转换为可重复使用的功能,并且可以使用任何变量。