当有人点击屏幕并因此暂停精灵工具包游戏时,我想显示“暂停”SKLabelNode
。
所以我在touchesBegan
- >
[self.pausedLabel setHidden:!self.pausedLabel.hidden];
[self.scene.view setPaused:!self.scene.view.paused];
游戏正确暂停,但SKLabelNode
未显示(场景在暂停前未呈现?!)
如果我添加NSTimer
来暂停场景,则会显示标签,但随后游戏将继续该计时器时间。
有没有人有更好的解决方案?
提前致谢
答案 0 :(得分:1)
我会为此使用SKAction。您可以使用+ runBlock:添加与隐藏标签相关的代码,然后使用-runAction方法和完成处理程序来暂停场景。 runBlock:方法可能会立即返回,但这样,屏幕会在场景暂停之前进行更新。
SKAction *action = [SKAction runBlock:^{
[self.pausedLabel setHidden:!self.pausedLabel.hidden];
}];
[self.pausedLabel runAction:action completion:^{
[self.scene.view setPaused:!self.scene.paused];
}];
答案 1 :(得分:0)
只需使用状态ivar来确定场景是否应更新其内容。
单击按钮时将此状态设置为PAUSE
并在场景框架更新循环中测试状态。
if (_state != PAUSE) {// Use enum for the state var
// Update scene objects
}
单击按钮时:
PAUSE
这种方法的好处是它可以让你准确地决定暂停时会发生什么(反对暂停整个场景)。您可以在暂停时为冷静的背景设置动画,或者执行任何您喜欢的操作,因为这完全在您的控制之中