我有一个带动画的游戏。在游戏场景中,我使用以下方法来暂停我的游戏(它运行良好,因为当用户点击iOS设备的任何点时,游戏就会暂停):
-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch=[touches anyObject];
CGPoint locationOfTouch=[self convertTouchToNodeSpace: touch];
CGRect rectOfScreen=CGRectMake(0, 0, screenSize.width, screenSize.height);
if (CGRectContainsPoint(rectOfScreen, locationOfTouch))
{
[[CCDirector sharedDirector] replaceScene:[PauseScene scene]];
[self unschedule:@selector(spawnEnemies:)];
[self unschedule:@selector(checkCollisionOfEnemyWithBullet:)];
[self unschedule:@selector(update:)];
[self unschedule:@selector(isJoystickActivated:)];
[self unschedule:@selector(checkHasGameEnded:)];
[[CCDirector sharedDirector] pause];
}
}
为了实现恢复操作,我创建了 PauseLayer:CCLayer,其中我实现了以下方法来恢复游戏:
-(void) continueGame:(id)sender
{
[[CCDirector sharedDirector] resume];
[[CCDirector sharedDirector] replaceScene:[GameSceneLayer scene]];
//[self resumeSchedulerAndActions];
}
这是我如何调用上述方法的代码:
CCMenuItemFont* continue_game=[CCMenuItemFont itemWithString:@"continue game" target:self selector:@selector(continueGame:)];
但是,当我选择继续游戏时,游戏从空白点开始:每个游戏状态,每个游戏角色都将是新的。如何从用户暂停游戏的初始点恢复游戏?谢谢!
您可以使用这两个 cocos2D 函数暂停和恢复:
[self pauseSchedulerAndActions]; //pause
[self resumeSchedulerAndActions];//resume
还要维护一个布尔变量,并在需要时进行检查。
bool mISGamePaused;