所以我在我的代码中添加了两个标签节点,并希望在显示另一个时隐藏一个,然后在游戏开始时反之亦然。
class GameScene: SKScene {
// Declarations
let startLabel:SKLabelNode = SKLabelNode()
let scoreLabel:SKLabelNode = SKLabelNode()
var score = 0
override func didMoveToView(view: SKView) {
// Properties
startLabel.fontSize = 20
startLabel.fontColor = UIColor.blackColor()
startLabel.position = CGPointMake(self.frame.width*0.5, self.frame.height*0.5)
startLabel.text = "Touch Paddle To Begin"
startLabel.hidden = false
self.addChild(startLabel)
scoreLabel.fontSize = 20
scoreLabel.fontColor = UIColor.blackColor()
scoreLabel.position = CGPointMake(self.frame.width*0.5, self.frame.height*0.75)
scoreLabel.text = "\(score)"
scoreLabel.hidden = true
self.addChild(scoreLabel)
然后,当触摸Paddle时,启动moveBall()函数并开始游戏。这是我交换标签的地方。
func moveBall() {
// Setting Labels
self.startLabel.hidden = true
self.scoreLabel.hidden = false
// Starting game
self.ball.physicsBody?.dynamic = true
但是,它有时只能起作用。它会完美地工作,然后在不改变任何东西的情况下我会再次运行它,只会显示一个标签。然后再次显示另一个标签,或者startLabel仅显示一帧然后消失。
免责声明:我真的不知道如何编码,只是想知道一个游戏,并试图让它成为现实。如果解决方案很简单,请道歉。对我的代码的任何建议将不胜感激。谢谢!
答案 0 :(得分:0)
根据给出的信息,它应该正常工作。但是你应该在touchesBegan方法中调用moveBall()。不是更新方法。
此外,如果您希望在用户触摸labelNode时调用它,则使用触摸位置开始。 (但我宁愿使用精灵而不是标签因为标签有点反应迟钝,因为有时手指不会碰到标签。
所以用正确的方法调用moveBall()。提供更多信息以提供更准确的答案。