cocos2d-xのゲームで。ホームボタンを押してゲームを終了したとき。次回、ゲームを最初からやり直す必要がありますが、最後の終了シーンが続かないようにするにはどうすればよいですか
1 に答える
理想的にはapplicationWillEnterForeground
、シーンを新しいインスタンスに置き換えて最初からやり直す必要があります。たとえば、実行中のシーンのクラスが呼び出された場合は、実行中のシーンをそのクラスの新しいインスタンスに置き換えるようにGameLevelScene
指示するだけです。CCDirector
例えば:
CCDirector::sharedDirector()->replaceScene(GameLevelScene::create());
しかし、バックグラウンドからの再開時にゲームを一時停止するのと同様のことを行っているときに、それがうまく機能していないことに気付きました (動作するはずでした。これは cocos2d-x に問題がある可能性があります)。そのため、回避策として、開始時に遅延時間がゼロのシーケンスを作成し、ゲームの一時停止関数を呼び出しました。バックグラウンドから再開した後、ゲームがこれを処理するために 1 ティックかかる必要があったと思います。あなたにとって、上記がうまくいかない場合は、これを試してください:
someNode->runAction(
CCSequence::create(CCDelayTime::create(0.0f),
CCCallFuncO::create(CCDirector::sharedDirector(),
callfuncO_selector(CCDirector::replaceScene),
GameLevelScene::create()),
NULL));
someNode
ゲーム内に存在する、つまり破壊されていないゲーム内の任意のノードにすることができます。それは生きているオブジェクトでなければなりません。ゲーム中に常に有効なゲーム マネージャー ノードを使用できます。ゲームマネージャノードは、このようなゲーム管理の問題を担当することができます。