所以我构建了一个类似于SaveAndLoad的类: public class SaveAndLoad { public Preferences pref; public final String path = "Highscore"; public SaveAndLoad() { pref = Gdx.app.getPreferences("Gametitle"); } public void saveInt(int v
public class SaveAndLoad { public Preferences pref; public final String path = "Highscore"; public SaveAndLoad() { pref = Gdx.app.getPreferences("Gametitle"); } public void saveInt(int value) { pref.putInteger(path, value); pref.flush(); } public int getInt() { return pref.getInteger(path); } }
当我尝试保存我的高分时,我会调用saveInt(高分),当你再次打开游戏时我会调用getInt.
constructor(){ SaveAndLoad sdRemote = new SaveAndLoad (); try { highscore = sdRemote.getInt(); } catch (NullPointerException e) { highscore = 0; } }
问题是当我在早期游戏之后再次开始游戏时,高分不加载,它返回零…
我已经完成了明确许可:
谢谢
///丹尼尔
PS.在最后一个答案中,我说它适用于某些设备,但我后来发现并非如此.
确保检索这样的数据:SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); int silent = settings.getInt("score", 0);
并保存如下:
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); SharedPreferences.Editor editor = settings.edit(); editor.putInt("score", playerScore); // Commit the edits! editor.commit(); //<----------
编辑:
啊,你在使用GDX.在这种情况下,请确保在GDX初始化后初始化此类.检查是否有Gdx.app.getPreferences(“游戏”);返回null.
EDIT2:
好的,所以我们已经确认Gdx在某些设备上存在问题(很糟糕).
如果你真的需要在桌面设备和Android设备上使用它,还有另一种方法.如果你只是想让你的游戏在Android上工作,你就不应该使用Gdx来保存数据.
我建议你使用一种称为GDX Android界面的东西.这样您就可以使用本答案中使用的原生Android调用自行处理在Android设备上保存数据.这不是很容易,但这里有一个教程:
https://code.google.com/p/libgdx-users/wiki/IntegratingAndroidNativeUiElements3TierProjectSetup