2016-05-30 8 views
0

私は、ゲームのサウンド設定をブール値として保存するために環境設定を使用しています。しかし、私が最初にゲームを開始すると、ブール値はfalseに初期化されます(サウンドオフ)。私は他の場所でそれを初期化していないためです。私はそれをcreateメソッドでtrueに初期化することができましたが、ゲームを開始するたびにサウンドで始まり、好みの目的を破るだけでした。LibGDXで環境設定値を一度初期化する方法は?

それ以外の場合は正常に動作します。最初にゲームを開始し、再起動するたびにブール値をtrueに初期化する必要があります。

環境設定でこれを行う方法はありますか、他の種類の保存方法を使用する必要がありますか?

注:私はあなたに少し異なるアプローチを示唆している、これは

答えて

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

ファイルはioは少し時間を取ると、より遅いあなたのアプリを作ることができますので、あなたは本当に、あなたのフラッシュの呼び出しを制限しようとする必要があります。明らかに、現在のケースではそれほど重要ではありません。 –

0

デスクトップアプリケーションです:まず

を、私は環境設定を初期化するのに最適な場所は、メインのcreate方法だと思いゲームクラス(extends Game):

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

次に、音楽を切り替えるには

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

そして最後に:方法は次のようになります

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

public static void toggleMusic() { 
    pref.putBoolean(MUSIC_ON, !isMusicOn()); 
    pref.flush(); 
} 
関連する問題