更新游戏中的变量

我正在玩一个游戏,它从存储为 .json 文件的表中加载变量。当用户第一次玩游戏时,将创建一个默认变量的表,看起来像这样:

GameState = {highscore = 0, musicon = true}

这个 .json 文件仅会创建一次(当用户第一次玩游戏时)。在玩游戏时,这些变量将会变化,当用户决定退出应用程序时,这些变量将会保存到 .json 文件中。表现可能像这样:

GameState = {highscore = 5, musicon = false}

当用户再次开始玩游戏时,这些变量将被加载,玩家可以继续他之前的游戏。

然而,由于我正在更新我的游戏,那个默认表中将有一些新的变量。例如:

v1.0 table
GameState = {highscore = 0, musicon = true}

v1.1 table
GameState = {highscore = 0, musicon = true, volume = 100}

由于使用 v1.0 游戏的玩家有一个表格看起来像这样:GameState = {highscore = 0, musicon = true},在将游戏更新到 v1.1 时他将失去 volume,导致游戏崩溃。

我的问题在于:当用户更新了游戏时,如何更新他的 .json 文件(表格),以添加新的变量,同时保留他的旧分数、设置等?我已经苦苦挣扎了几天,但无法做到这一点。任何想法?

点赞
用户6245072
用户6245072

使用关键字 or 来初始化一个值,如果该值不存在的话。例如:

GameStat.volume = GameStat.volume or 100

or 将会返回它的第一个值,如果该值不是 falsenil,否则将会返回它的第二个值。

2016-04-23 17:01:45