我已经检查了暂停我的精灵套件游戏的其他答案。我想在精灵加载后暂停游戏,播放“READY SET GO”动画,然后取消暂停游戏。
在viewdidload中,我尝试了self.view.scene.paused = YES;
和self.scene.view.paused = YES;
以及[self.view.scene setPaused:YES];
和[self.scene.view setPaused:YES];
,但都没有。
我确实在暂停之前加载了一些NSTimers,并且我被告知暂停场景不会暂停定时器,但暂停我的场景似乎不会暂停任何SKActions或物理模拟。< / p>
出于某种原因,[self.heli setPaused:YES];
会暂停heli动画,但不会暂停heli的物理模拟。
此外,我的其他精灵被添加到方法中,它们是随机生成的障碍,并作为子项添加到self
那么为什么不暂停工作?
答案 0 :(得分:2)
你可以用这个暂停物理:
scene.physicsWorld.speed = 0.0;
根据评论进行修改:
您正在暂停节点,而不是整个场景。
[self.heli setPaused:YES];
这个“...确定是否处理了节点及其后代上的动作。”
如果您想要暂停整个场景,那么您应该使用:
self.scene.view.paused = YES;
将停止所有动作和物理模拟。
答案 1 :(得分:0)
以下是一种可以从viewDidLoad暂停场景的方法。我不建议在viewDidLoad中暂停您的观点,但是这里有如何做到这一点......
- (void)viewDidLoad
{
[super viewDidLoad];
// Configure the view.
SKView * skView = (SKView *)self.view;
skView.showsFPS = YES;
skView.showsNodeCount = YES;
// Create and configure the scene.
SKScene * scene = [MyScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
// The following will NOT pause your SKView because your scene has yet to be presented,
// so scene.view == nil
scene.view.paused = YES;
// This will pause your scene and its contents because the scene has been created
skView.paused = YES;
// Present the scene.
[skView presentScene:scene];
}
我建议您在SKScene子类的didMoveToView(在initWithSize中工作)方法中使用self.scene.view.paused = YES暂停场景。此外,您应该考虑使用SKActions(使用waitForDuration,performSelector:onTarget等)替换核心中的NSTimers,因为后者在暂停/恢复游戏时会暂停/恢复。