Возобновить игровой цикл в cocos2d

У меня есть игра с анимацией. В игровой сцене я использую метод, описанный ниже, чтобы поставить игру на паузу (она работает отлично, потому что игра останавливается, когда пользователи нажимают на любую точку устройства 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:)];

Но когда я выбираю продолжить игру, игра начинается с пустого места: каждое игровое состояние, каждый игровой персонаж будет новым. Как я могу возобновить свою игру с начальной точки, где она была приостановлена ​​пользователем? Спасибо!

1 ответ

Вы можете использовать эти две функции cocos2D для приостановки и возобновления:

[self pauseSchedulerAndActions]; //pause
[self resumeSchedulerAndActions];//resume

Также поддерживайте одну переменную bool и проверяйте ее всякий раз, когда вам это нужно.

   bool mISGamePaused;
Другие вопросы по тегам