シナリオは次のとおりです。
私は次のシーンを持っています:
- スプラッシュシーン
- ローディングシーン
- ゲームモードシーン
- PlayModeScene
- ゲームシーン
シーン間のナビゲーションを管理する SceneController クラスがあります。
SceneController には、すべてのシーンへのインスタンスがあります。
すべてのシーン インスタンスを初期化し、LoadingScene ですべてのシーン リソースをロードしています。
シーンを GameModeScene から PlayModeScene に変更すると、完全に正常に動作します。
しかし、シーンを GameModeScene に再度変更しようとすると、GameModeScene の最初の実行時に初期化されたブール値とその他の変数がそのまま残り、リセットされません。
注: 変数は各クラスに対してプライベートであり、静的ではありません
pGameModeSceneto.reset(); を試しました。しかし、うまくいきません。
何か提案はありますか?
シーンのインスタンスを初期化する方法は次のとおりです
SceneController.loadSceneResources()
public void loadSceneResources(SceneType mType){
switch(mType){
case SplashScene:
this.mSplashScene = new SplashScene(this.mActivity);
break;
case LoadingScene:
mLoadingScene = new LoadingScene(mActivity);
break;
case GameModeScene:
mGameModeScene=new GameModeScene(this.mActivity);
break;
case PlayModeScene:
mPlayModeScene=new PlayModeScene(this.mActivity);
break;
case GameScene:
break;
default:
}
}
各クラスのコンストラクターがリソースをロードしています。
現在のシーン インスタンスを取得する方法は次のとおりです。
SceneController.getScene() public Scene getScene(SceneType mType){
switch(mType){
case SplashScene:
this.mCurrentScene = mSplashScene;
break;
case LoadingScene:
this.mCurrentScene = mLoadingScene;
break;
case GameModeScene:
this.mCurrentScene = mGameModeScene;
break;
case PlayModeScene:
this.mCurrentScene = mPlayModeScene;
break;
default:
}