在SpriteKit中使用按钮的正确方法

时间:2016-11-14 08:27:44

标签: ios swift sprite-kit uibutton

我正在创建我的第二个应用程序,但首先是iOS游戏。我完成了编码和关卡。

但最后我正在努力使用sprite kit中的按钮,所以我可以创建共享,或者在其中实现设置菜单,我正在使用的一种方式在下面证明。

  Button = UIButton(type: UIButtonType.custom)
  Button.frame = CGRect(x: 0, y: 0, width: 50, height: 50)
  Button.center = CGPoint(x: (self.view?.frame.width)! - 30, y: 60)
  Button.setImage(UIImage(named: "Pause"), for: UIControlState.normal)
  Button.addTarget(self, action: #selector(PauseGame), for: UIControlEvents.touchUpInside)
  self.view?.addSubview(Button)

现在这个按钮的问题在于它总是启用并显示,无论我在哪个屏幕或场景。

有没有其他方法可以使用这些按钮?

或许我必须在SpriteKit项目中使用storyboard来处理所有设置,菜单屏幕和额外按钮(例如,喜欢,分享)?

1 个答案:

答案 0 :(得分:1)

您正尝试在 SpriteKit 中使用UIKit。这就是更改场景时不删除按钮的原因。这一行:

self.view?.addSubview(Button)

将按钮添加到视图,而不是场景。这很重要,因为视图控制器在视图上显示场景,因此您有一个(通常)显示场景的视图。将按钮添加到视图时,它实际上附加到视图,而不是场景。要将按钮节点添加到场景,请尝试以下操作:

let button = SKSpriteNode(imageNamed: "Paused")
button.size = CGSize(width: 50, height: 50)
button.position = CGPoint(x: (self.view?.frame.width)! - 30, y: 60)
// Whatever else you want to do when setting up the button node
addChild(button)

这里重要的一点是:

addChild(button)

因为它会将SKSpriteNode添加到场景。这意味着当从一个场景转换到另一个场景时,该按钮将不再保持在固定位置,并将随场景一起转换。