ios - Sprite Kit 中的暂停游戏 : Why doesn't this work?
<p><p>所以我在我的游戏中添加了一个暂停按钮,并且 View 的卡住和解冻都有效。但是,如果 View 当前被卡住,我希望它在屏幕上显示一条消息“暂停”。但是如果我触摸我的暂停按钮,它不会显示标签。这真的很奇怪,因为我发现如果我将设备转为横向模式,就会出现“暂停”消息。 (反之亦然,所以如果我在横向模式下触摸按钮并将设备转为纵向,则会出现暂停标签)
有人能解决这个问题吗?</p>
<p>顺便说一句:我还尝试了不同的方法来执行此操作,例如在场景开始时立即初始化暂停标签并在需要时隐藏/显示它。这也不起作用。
我还尝试在更新方法中使用 if 语句(如果场景暂停 => 显示暂停标签),这也不起作用。</p>
<p>我之前在这里和苹果开发论坛上问过这个问题,但还没有人能解决这个问题。有人认为我会在 viewwilllayoutsubviews 中呈现场景,这将解释纵向 - 横向行为,但我从未在整个应用程序代码中使用该方法。 </p>
<pre><code> -(void)gameScene{
//Pause
pauseButton = ;
pauseButton.position = CGPointMake(screenWidth/2, screenHeight-80);
pauseButton.zPosition = 5;
pauseButton.name = @"pauseButton";
pauseButton.size = CGSizeMake(80, 80);
;
//Pause Label (wenn Pause gedrückt wird)
pauseLabel = ;
pauseLabel.text = @"PAUSE";
pauseLabel.fontSize = 70;
pauseLabel.position = CGPointMake(screenWidth/2, screenHeight/2);
pauseLabel.zPosition = 5;
pauseCount = 1;
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//Pause Button
UITouch *touch = ;
CGPoint location = ;
SKNode *node = ;
if () {
pauseCount++;
if (pauseCount%2 == 0) {
self.scene.view.paused = YES;
;
}
else{
self.scene.view.paused = NO;
;
}
}
}
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>我在暂停时遇到了类似的问题,发现问题与以下事实有关:虽然 pauseLabel 已添加到节点树中,但场景在显示之前已暂停。我使用的解决方案是使用SKAction依次运行标签添加和暂停。</p>
<pre><code>SKAction *pauseLabelAction = [SKAction runBlock:^{
[ addChild:pauseLabel];
}];
SKAction *delayAction = ; // Might not be needed.
SKAction *pauseSceneAction = [SKAction runBlock:^{
[[ view] setPause:YES];
}];
SKAction *sequence = ];
;
</code></pre>
<p>我尚未对此进行测试,但可能还需要稍微延迟一下,以便在触发暂停之前让标签有时间显示。</p></p>
<p style="font-size: 20px;">关于ios - Sprite Kit 中的暂停游戏 : Why doesn't this work?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/23952439/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/23952439/
</a>
</p>
页:
[1]