我正在嘗試使用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