ゲームのチュートリアルをゲームの最初の起動用に作成したいと思います。次回のチュートリアルは行わないでください。 これは、起動が最初かどうかを示すために、優先的に格納するブール値を作成しました。起動が最初に起動し、チュートリアル-LibGDXが含まれているかどうかを確認する方法
マイシングルトンの好みのクラスはここに含まれている:私のgamescreenクラスで
public class FirstLaunchNotifier {
public static final FirstLaunchNotifier INSTANCE = new FirstLaunchNotifier();
private final Preferences prefs;
private static final String LAUNCH_KEY = "launch";
private static final String PREF_NAME = "TMS";
/* if false->first launch with tutorial.else if true->no tutorial */
private boolean launchBoolean;
public FirstLaunchNotifier() {
prefs = Gdx.app.getPreferences(PREF_NAME);
launchBoolean = prefs.getBoolean(LAUNCH_KEY, false);
}
public void saveLaunchState() {
launchBoolean = true;
prefs.putBoolean(LAUNCH_KEY, launchBoolean);
prefs.flush();
}
public boolean getLaunchBoolean() {
// System.out.println("launch::: "+launchBoolean);
return launchBoolean;
}
を、現在私はrender()
内で呼び出していますupdate()
方法があります。
初めてのチュートリアルでは、別の更新方法tutorialUpdate()
を呼び出したいと思います。 このlaunchBool値をこのupdate()
とtutorialUpdate()
で正しく取得する方法がわかりません。
チュートリアルが完了したら、ゲームは通常のプレイに戻ってください。saveLaunchState()
が呼び出され、launchboolean
が真になって最初のプレイが終了し、チュートリアルは必要ないことを示します。
これは、render()をrender()で今呼び出す方法です。
case RUN:
update(delta);
break;
このようなブール値を取得する必要はありますか?
if(FirstLaunchNotifier.INSTANCE.getLaunchBoolean()) {
update(delta);
tutorial update();
}else{
update(delta);
}
これは適切な方法ですか?
を呼び出すことができますifとelseの両方にありますが、完全にifから外すことができます。私は多形的な方法でこれを行う方法を模索することをお勧めしたいと思います。 –
どこで 'saveLaunchState();'を呼びますか?私がお勧めするのは、プレイヤーがある時点で終了したときだけチュートリアルをスキップすることです。 2回目のアプリを起動しても、1回目のスタート時にプレイしたわけではありません。 –
シングルトンクラスの構文が間違っています。 – Aryan