2015-08-05 3 views
0

У меня есть GamePlayScene, который по окончании удаляет все узлы и отображает счет и возможность перезапуска. У меня также есть кнопка на этой сцене, которая приведет вас к другой сцене, чтобы отображать обновляемые элементы. Я хотел бы создать функцию, которая добавит кнопку «Назад» на сцену «Обновить элементы», которая вернет меня на завершенную сцену GamePlay. Код, который у меня есть сейчас, возвращает меня обратно в сцену GamePlay, но перезапускает игру, а не отображает текст над текстом. Я пробовал искать в Интернете, но я не могу найти хорошее решение. Мой код:Возврат к предыдущей сцене в том же состоянии

GamePlayScene.m 

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
       ... 
     else if (self.restart) { 
       [[GameState sharedInstance] saveState]; 
       if ([node.name isEqualToString:@"UpgradesButton"]){ 
        UpgradeShipScene *upgradeScene = [UpgradeShipScene sceneWithSize:(self.frame.size)]; 
        SKTransition *transition = [SKTransition fadeWithDuration:0.5]; 
        [self.view presentScene:upgradeScene transition:transition]; 
       } 
       ... 
    } 

UpgradesScene.m 
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
     UITouch *touch = [touches anyObject]; 
     CGPoint location = [touch locationInNode:self]; 
     SKNode *node = [self nodeAtPoint:location]; 
     if ([node.name isEqualToString:@"BackButton"]){ 
      for (SKNode *node in [self children]){ 
       [node removeFromParent]; 
      } 
      GamePlayScene *scene = [GamePlayScene sceneWithSize:self.view.bounds.size]; 
      SKTransition *transition = [SKTransition fadeWithDuration:0.5]; 
      [self.view presentScene:scene transition:transition]; 
     } 
} 
+0

Есть ли проблема не использовать 'SKScene' и использовать' SKNode' как «фальшивую сцену»? Затем вы можете нажать кнопку «Назад», и это будет удалено из родителя (это будет игра поверх сцены). – aramusss

+0

Хмм, я не думал об этом, но похоже, что это легко устранит мою проблему. Спасибо за идею! – Exprosul

+0

Отлично! Пожалуйста, примите ответ, который я разместил, если это было вашим решением;) – aramusss

ответ

1

Вы можете использовать SKNode как «фальшивый» SKScene, а затем использовать SKAction, чтобы оживить его (представить или скрыть).

Смежные вопросы