我有27个角色,我希望玩家通过击败分数解锁,例如如果他的分数大于200,他会解锁角色#1。我很难做到这一点。
我有一个包含数字的字符类,解锁它所需的分数,以及检查是否解锁的布尔值。但是当谈到储蓄时,我不能那样做。
主游戏循环位于文件GameScreen
中。它的值为points
,计算得分。
当GameState
更改为PlayerDead
时,我想检查是否有任何新角色已被解锁,以及是否已经击败高分以保存积分。
请帮助,我正在努力工作超过一周,我找不到SharedPrefs
的好教程,因为它们都适用于基于GUI的活动,可以保存您输入的姓名和姓氏。
答案 0 :(得分:0)
如果您需要sharedPrefs,我可以帮助您。
我可以提供一些示例代码。
或者你可以发送你的代码和错误,如果你得到它,我们会更新它。
但是sharedPrefs是个好主意吗?如果用户进入应用程序设置并清除应用程序的数据,则所有数据都将丢失。
为什么不尝试创建一个sqlite数据库,将其保存到assets目录并使用它?
答案 1 :(得分:0)
实际上非常简单,您使用SharedPreferences来存储键值对。你可以打电话
SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
从GameScreen中定义一个常量:
public static final String KEY_SCORE = "score";
用作保存的关键。
为了实际保存,您需要一个编辑器:
SharedPreferences.Editor mEditor = mPrefs.edit();
//save data now, mPlayerScore is the score you keep track of
//if it's another type call putString(), etc
mEditor.putInt(KEY_SCORE, mPlayerScore);
//if that is the only thing you want for noe
//close and commit
mEditor.commit();
为了检索已保存的分数,在onCreate()期间,您可以执行以下操作:
public void getUserProgress() {
SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
//no need for an editor when retrieving
mPlayerScore = mPrefs.getInt(KEY_SCORE, 0);
//second value passed was the default score
//if no score was found
}
为了检查解锁的新角色,您可以在每场比赛后调用以下代码:
private void checkForUserUnlocks() {
if (mPlayerScore >= MyUnlockableCharacter.SCORE_NEEDED_TO_UNLOCK)
MyUnlockableCharacter.isUnlocked = true;
//and same for other unlockabld characters
}
还有其他方法可以访问SharedPreferences,如果您需要更多信息,请与我们联系。
答案 2 :(得分:0)
使用以下代码存储和检索来自SharedPreference的分数。
public static void saveScore(Context context, int score){
SharedPreferences sharedPreferences = context.getSharedPreferences("YOUR_PACKAGE_NAME", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("SCORE", value);
editor.commit();
}
public static int loadScore(Context context){
SharedPreferences sharedPreferences = context.getSharedPreferences("YOUR_PACKAGE_NAME", Context.MODE_PRIVATE);
int score = sharedPreferences.getInt("SCORE", 0);
return score;
}
答案 3 :(得分:0)
阅读样本;
public int Read() {
SharedPreferences mSharedPrefs = getSharedPreferences("FileName",
MODE_PRIVATE);
SharedPreferences.Editor mPrefsEditor = mSharedPrefs.edit();
int mCounter = mSharedPrefs.getInt("Counter", 0);
return mCounter;
}
写样本;
public void Write() {
SharedPreferences mSharedPrefs = getSharedPreferences("FileName",
MODE_PRIVATE);
SharedPreferences.Editor mPrefsEditor = mSharedPrefs.edit();
mPrefsEditor.putInt("Counter", 15);
mPrefsEditor.commit();
}