Android共享首选项保存高分和解锁

时间:2013-02-23 19:14:50

标签: android sharedpreferences

我有27个角色,我希望玩家通过击败分数解锁,例如如果他的分数大于200,他会解锁角色#1。我很难做到这一点。

我有一个包含数字的字符类,解锁它所需的分数,以及检查是否解锁的布尔值。但是当谈到储蓄时,我不能那样做。

主游戏循环位于文件GameScreen中。它的值为points,计算得分。

GameState更改为PlayerDead时,我想检查是否有任何新角色已被解锁,以及是否已经击败高分以保存积分。

请帮助,我正在努力工作超过一周,我找不到SharedPrefs的好教程,因为它们都适用于基于GUI的活动,可以保存您输入的姓名和姓氏。

4 个答案:

答案 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();
    }