【问题标题】:Sprite Kit Scene not presentingSprite Kit 场景未呈现
【发布时间】:2014-02-05 00:18:06
【问题描述】:

我有一个 sprite-kit 游戏,我需要经常检查玩家是否输了

- (void)update:(NSTimeInterval)currentTime
{
 for (SKSpriteNode *sprite in self.alienArray ) {
    if (sprite.position.y < 10) {
        LostScene *lostScene = [[LostScene alloc] initWithSize: CGSizeMake(CGRectGetWidth(self.view.bounds), CGRectGetHeight(self.view.bounds))];
        NSLog(@"about to present");
        [self.view presentScene:lostScene transition:[SKTransition fadeWithDuration:0.5]];
    }

}

}

但是当这个方法被调用时(我知道正在发生),没有场景出现。我究竟做错了什么?我相信它与过渡有关,因为当我将其取出时,它可以正常工作

【问题讨论】:

  • 然后about to present被调用了?

标签: ios iphone xcode ios7 sprite-kit


【解决方案1】:

您应该添加现有场景的属性,例如:BOOL playerHasLost 并编辑您的更新方法:

- (void)update:(NSTimeInterval)currentTime
{
if(!playerHasLost)
{
for (SKSpriteNode *sprite in self.alienArray ) 
{
  if (sprite.position.y < 10)
  {
    playerHasLost = YES;
    LostScene *lostScene = [[LostScene alloc] initWithSize: CGSizeMake(CGRectGetWidth(self.view.bounds), CGRectGetHeight(self.view.bounds))];
    NSLog(@"about to present");
    [self.view presentScene:lostScene transition:[SKTransition fadeWithDuration:0.5]];
    break;//to get out of for loop
  }
}
}
}

因此,一旦精灵到达您视为丢失位置的位置,它就会将变量设置为“是”,呈现场景并且不会再这样做。

【讨论】:

    【解决方案2】:

    原因很简单,更新方法在每一帧都被调用,随着运行过渡,场景将在每一帧重新呈现,因此看起来好像什么都没有发生。您应该会看到 NSLog 向日志控制台发送垃圾邮件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-15
      相关资源
      最近更新 更多