Sprite Kit 场景未呈现

Posted

技术标签:

【中文标题】Sprite Kit 场景未呈现【英文标题】:Sprite Kit Scene not presenting 【发布时间】: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被调用了? 【参考方案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 向日志控制台发送垃圾邮件。

【讨论】:

以上是关于Sprite Kit 场景未呈现的主要内容,如果未能解决你的问题,请参考以下文章

Sprite Kit 最后得分数据

如何在我的 Sprite Kit 游戏应用中实现 Facebook 和 Twitter 发布?

使用 Swift 在 sprite kit 中的多个场景中重用相同的 sprite 节点

Sprite-kit 主要角色选择器

如何在场景中放置场景 - Sprite Kit

在 Sprite Kit 场景中隐藏 iAd