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 游戏应用中实现 Facebook 和 Twitter 发布?