В задаче C, представляя новую сцену, как вы удаляете старую сцену?

Я новичок в Objective-C, поэтому, возможно, я использую неправильную методологию для представления сцены в первую очередь, но в тот момент, когда я представляю свою новую сцену, через нее можно увидеть старую сцену.

- (void)buttonClicked:(UIButton*)button
{
    NSLog(@"Button %ld clicked.", (long int)[button tag]);
    WarScene *battle = [[WarScene alloc] initWithSize: CGSizeMake(1024,768)];
    SKTransition *reveal = [SKTransition       revealWithDirection:SKTransitionDirectionDown duration:1.0];
    SKView * skView = (SKView *)self.view;
    [skView presentScene:battle transition:reveal];
}

Есть ли что-то, что я должен сначала написать перед методом presentScene, который удаляет текущую сцену?

Извините, если это очень простой вопрос, я уже гуглил и искал примеры, но ни один из них, похоже, не имеет никакого дополнительного кода, который мне не хватает, что предполагает, что я, вероятно, неправильно представляю сцену в первую очередь.


person Jack Schofield    schedule 10.08.2015    source источник


Ответы (2)


Хорошие новости! Вам не нужно ничего писать, чтобы удалить старую сцену. Он удаляется автоматически, так как Sprite Kit делает все за вас. Однако, если вам нужно, вы можете сделать дополнительную «завершение» в методе didMoveFromView.

Теперь, люди в прошлом сообщили, через что вы проходите. Мой совет: вместо перехода между SKScenes переходите между SKViews, которые представляют свою собственную SKScene. Таким образом, вы гарантируете, что ВСЕ автоматически освобождается, сохраняя все это отдельно. Посмотрите этот ответ, думаю, он вам поможет много.

Удачи!

person MaxKargin    schedule 10.08.2015

Вам не нужно писать код, чтобы удалить старую сцену. Sprite Kit сделает это сам. Однако, если вы хотите сделать это, вы можете сделать следующее:

  [skView presentScene:nil];

Также этот вопрос stackoverflow может дополнительно прояснить вас.

person Munahil    schedule 10.08.2015