在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