我正在尝试使用SpriteKit制作小游戏。 (适用于iOS 10的Xcode 8和Swift 3)无法使用Swift 3在按钮上更新SKLabel节点按
我想让用户在触摸暂停文本标签时暂停游戏。当他这样做时,我想暂停游戏并将标签文本更改为“取消暂停”。
以下是我对该部分的代码。
if (pauseTextLabel.contains(touchLocation!)){
gameLoopPaused = !gameLoopPaused;
if (pauseTextLabel.text == "Pause"){
// pauseTextLabel.text = "Unpause";
pauseTextLabel = SKLabelNode(fontNamed: gameData.fontName);
initLabel(label: pauseTextLabel, gameData: gameData, text: "Unpause", pos: CGPoint(x: 3 * self.size.width/4 , y: self.size.height - 50));
self.addChild(pauseTextLabel);
runPauseAction();
} else {
pauseTextLabel.text = "Pause";
runUnpauseAction();
}
}
我试过这样做,它没有工作。
if (pauseTextLabel.contains(touchLocation!)){
gameLoopPaused = !gameLoopPaused;
if (pauseTextLabel.text == "Pause"){
pauseTextLabel.text = "Unpause";
runPauseAction();
} else {
pauseTextLabel.text = "Pause";
runUnpauseAction();
}
}
我在该块之前添加了一个断点,并且此块在控制台中未显示任何消息。游戏正在暂停,我可以恢复。然而唯一不起作用的是显示文本更新。我试图将其删除并将其添加到视图中。它没有工作。
真的很感激任何帮助或提示出了什么问题。
编辑: 我修改了touchesBegan建议。我包括我的runPauseAction()以提供更多信息以防万一。
private func runPauseAction(){
print(#function);
//self.pauseTextLabel.text = "Resume";
self.view?.isPaused = true;
self.physicsWorld.speed = 0.0;
}
我改变了功能的touchesBegan像你这样的建议。我仍然无法获得标签更新。我在问题中包含了pauseFunction,因为它可能是导致问题的原因之一。我看着DemoBot,并希望按照这种格式来进行下一个项目。但我想知道是什么造成这个问题。 – Quicksillver
标签是不是正在更新或者只是当您想要恢复? – crashoverride777
我认为这是两个。我刚发现他们实际上在变化。我评论了第二部分,我将其从“简历”改回为“暂停”,以取消暂停游戏。我可以看到文本从“暂停”变为“恢复”,但是只有在我没有休息过游戏之后。对不起,如果这是令人困惑。这不是我想要的行为.. – Quicksillver