正如龙骑士所说,尽量避免在SpriteKit中使用UIKit。
但是在某些情况下,UIKit在SpriteKit中非常有用。例如,我使用UICollectionViews在我的一个游戏中显示我的世界和水平选择菜单,因为它是最好的选项(单元重用,出队,动画效果等)。
只需使用SKScene的视图属性在特定场景中添加UIKit元素即可。
class MenuScene: SKScene {
let slider = UISlider(frame: CGRect(x: 250, y: 250, width: 280, height: 20))
override func didMoveToView(view: SKView) {
loadSlider()
}
private func loadSlider() {
...
view?.addSubview(slider) // if you are calling view outside of DidMoveToView it is an optional, so use ?
}
}
当你改变场景作为它添加到你的GameViewController时,不要忘了再次删除它。
override func willMoveFromView(view: SKView) {
slider.removeFromSuperview()
}
希望这会有所帮助。
我会建议制作自己的滑块控件,它不值得将UIKit与SceneKit结合使用,并且滑块控件不难做到(请看SKCropNode以启动它) – Knight0fDragon
我同意。制作一个自定义的UISlider类。 SpriteKit没有任何按钮,但是我创建了自己的JKButtonNode,它是SKSpriteNode的子类,它的工作原理与UIButton几乎完全相同。在任何SprteKit游戏中实现都很容易。 –