如何将UISlider添加到不是View Controller主场景的SKScene

时间:2016-08-24 21:07:40

标签: ios swift sprite-kit uikit uislider

我正在创建一个带有一个视图控制器和多个skscenes的Sprite Kit游戏。基本上,应用程序加载视图控制器,它加载菜单场景,然后我使用SKTransitions进入场景之间。在创建设置场景时,我希望能够像UISlider一样使用某些UIKit元素 - 但是,我只能让UISlider显示在菜单场景中。为了让UISlider仅在设置场景中显示,我到底需要做什么?感谢您花时间阅读本文。

1 个答案:

答案 0 :(得分:1)

龙的骑士尽可能避免在SpriteKit中使用UIKit。

但是在某些情况下,UIKit在SpriteKit中非常有用。例如,我使用UICollectionViews在我的一个游戏中显示我的World和Level选择菜单,因为它是最好的选项(单元重用,出列,动画效果等)。

只需使用SKScene的view属性即可在特定场景中添加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()
}

希望这有帮助。