2016-08-24 12 views
1

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

+1

我会建议制作自己的滑块控件,它不值得将UIKit与SceneKit结合使用,并且滑块控件不难做到(请看SKCropNode以启动它) – Knight0fDragon

+0

我同意。制作一个自定义的UISlider类。 SpriteKit没有任何按钮,但是我创建了自己的JKButtonNode,它是SKSpriteNode的子类,它的工作原理与UIButton几乎完全相同。在任何SprteKit游戏中实现都很容易。 –

回答

1

正如龙骑士所说,尽量避免在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() 
} 

希望这会有所帮助。

相关问题