2016-05-30 3 views
0

J'utilise les préférences pour enregistrer les paramètres de son dans mon jeu en tant que valeur booléenne. Cependant, lorsque je lance le jeu pour la première fois, le booléen s'initialise à false (son désactivé), car je ne l'initialise pas ailleurs. Je pourrais l'initialiser à vrai dans la méthode de création, mais alors le jeu commencerait juste avec des sons à chaque fois que vous commenceriez le jeu, et cela irait à l'encontre du but des préférences.Comment initialiser la valeur de préférence une fois dans LibGDX?

Sinon, cela fonctionne très bien, c'est juste que je veux que le booléen s'initialise à vrai la première fois que vous démarrez le jeu et pas chaque fois que vous le redémarrez.

Existe-t-il un moyen de faire cela avec les préférences ou dois-je utiliser un autre type de méthode d'enregistrement?

Note: Ceci est une application de bureau

Répondre

0
public Preferences getPreferences() { 
     if (preferences == null) { 
      preferences = Gdx.app.getPreferences("myPrefs"); 
     } 
     return preferences; 
    } 

    private void generatePreferences() { 
     getPreferences().clear(); 
     getPreferences().putBoolean("soundEnabled", true).flush(); 
     getPreferences().putBoolean("notFirstLaunch", true).flush(); 
    } 

    public void loadPreferences() { 
     if (!getPreferences().getBoolean("notFirstLaunch")) { 
      generatePreferences(); 
     } else { 
     //read the prefs and do your stuff 
     } 
    } 
+0

Vous devriez vraiment essayer de limiter vos appels à chasse d'eau, car le fichier io peut prendre un peu de temps et rend votre application plus lente . Évidemment, dans le cas présent, cela n'aura pas beaucoup d'importance. –

0

Je vous suggère une approche légèrement différente:

Tout d'abord, je pense que l'endroit idéal pour initialiser prefs est la méthode create de la principale classe de jeu (celui qui extends Game):

public void create() { 
    Prefs.initPrefs(); 
    ....other initialization.... 
} 

Ensuite, initPrefs méthode ressemble à:

private static final String MUSIC_ON = "music_on"; 
private static final String LANG = "lang";  

public static void initPrefs() { 
    boolean needChange = false; 
    if (!pref.contains(MUSIC_ON)) { 
     pref.putBoolean(MUSIC_ON, true); 
     needChange = true; 
    } 

    //if no lang - select system default 
    if (!pref.contains(LANG)) { 
     String language = Locale.getDefault().getLanguage(); 
     pref.putString(LANG, language); 
     needChange = true; 
    } 
    if (needChange) { 
     pref.flush(); 
    } 
} 

Et enfin pour changer la musique:

public static boolean isMusicOn() { 
    return pref.getBoolean(MUSIC_ON); 
} 

public static void toggleMusic() { 
    pref.putBoolean(MUSIC_ON, !isMusicOn()); 
    pref.flush(); 
}