在libGDX中使用首选项保存数据

在我的游戏项目中,我希望使用首选项界面保存一些级别的数据,如硬币,gams等。

我认为在我的问题中,数据只是级别号。 ………………………………………….. ………………….

1)如果玩家完成了level_1,则此代码调用以保存LEVEL_NUM_

 preferences.putInteger("LEVEL_NUM_", getLevelNum()); preferences.flush(); 

.prefs的文件:

     1 3225  

2)如果播放器完成level_2,则再次调用此代码以保存LEVEL_NUM_

 preferences.putInteger("LEVEL_NUM_", getLevelNum()); preferences.flush(); 

首选项更新数据,即用新的LEVEL_NUM_数据替换LEVEL_NUM_的数据。

.prefs的文件:

     2 5995  

我想添加数据(如堆栈)不替换数据。 我所做的 ?

你需要的只是将你的关卡保存在某个集合中(比如Array <>),然后将这个集合保存到Preferences。 你需要将这个集合转换为String(没有putArray()函数或类似的东西),最好的想法是将它jsonify。

JSON是一种文件格式(类似于xml,但更轻),并得到libgdx方面的良好支持。 实现目标的代码如下:

  FloatArray levels = new FloatArray(); levels.add(5993); levels.add(5995); ... Preferences p = Gdx.app.getPreferences("SETTINGS"); Json json = new Json(); String levelsJson = json.toJson(FloatArray.class, levels); p.putString("levels", levelsJson); 

现在你已经保存了级别集合,所有你需要做的就是:

  FloatArray levels = json.fromJson(FloatArray.class, p.getString("levels"); 

此致,Michał

另一种可能的解决方案是将每个级别的分数存储在它自己的Key / Value对中,其中Key是级别,值是分数:

 preferences.putInteger("LEVEL_NUM_" + getLevelNum(), getScore()); prefernces.flush(); 

首选项看起来像这样:

    3225 5995