2016-08-24 2 views
1

私は1つのView Controllerと複数のSkscenesでSprite Kitゲームを作成しています。基本的に、アプリケーションは、メニューシーンをロードするView Controllerをロードし、SKTransitionsを使用してシーン間を移動します。設定シーンを作成する際に、UISliderのような特定のUIKit要素を使用できるようにしたいのですが、UISliderをメニューシーンに表示することしかできません。 UISliderを設定シーンにのみ表示させるには、どうすればいいですか?これを読んでいただきありがとうございます。View ControllerのメインシーンではないSKSceneにUISliderを追加するには

+1

UIKitとSceneKitを組み合わせるのは面倒ではなく、スライダコントロールは難しくありません(SKCropNodeを見てください) – Knight0fDragon

+0

私は同意します。カスタムのUISliderクラスを作成します。 SpriteKitにはボタンはありませんが、JKButtonNodeと呼ばれる独自のクラスを作成しました。これはSKSpriteNodeのサブクラスで、UIButtonとほぼ同じように機能します。あらゆるSprteKitゲームで実装するのは簡単です。 –

答えて

1

龍の騎士は、できるだけ多くの場合、SpriteKitでUIKitを使用することを避けることが最善と述べました。

ただし、UIKitはSpriteKitで非常に便利です。たとえば、UICollectionViewsを使用して、WorldとLevelの選択メニューを自分のゲームの1つに表示することができます。これは、セルの再利用、デキュー、アニメーション効果などの最も良いオプションです。

SKSceneのviewプロパティを使用して、特定のシーンにUIKit要素を追加するだけです。あなたがそのあなたのGameViewControllerに追加してシーンを変更したときに

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 ? 
    } 
} 

いけないもう一度それを削除するのを忘れ。

override func willMoveFromView(view: SKView) { 
    slider.removeFromSuperview() 
} 

これが役に立ちます。

関連する問題