使用新变量更新您的游戏

Updating your game with new variables

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

GameState = {highscore = 0, musicon = true}

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

GameState = {highscore = 5, musicon = false}

当用户再次开始游戏时,这些变量将被加载并且玩家可以继续,因为他从未离开过游戏。

但是,当我更新我的游戏时,默认值 table 将包含一些新变量。示例:

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

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

由于玩 v1.0 游戏的玩家的 table 看起来像这样:GameState = {highscore = 0, musicon = true},他将在更新游戏到 [= 时丢失 volume 16=]导致游戏崩溃。

这是我的问题:我怎样才能做到,当用户更新游戏时,也用新更新中添加的新变量更新他的 .json 文件 (table)同时保留他的旧分数、设置等?我已经为此苦苦挣扎了几天,但我做不到。有什么想法吗?

如果值不存在,请使用关键字 or 初始化值。 例如:

GameStat.volume = GameStat.volume or 100

or returns 如果它不是 falsenil 它的第一个值,否则它 returns 它的第二个值。