Как добавить UISlider в SKScene, который не является главной сценой View Controller

Я создаю игру Sprite Kit с одним контроллером представления и несколькими сценами. По сути, приложение загружает контроллер представления, который загружает сцену меню, а затем я использую SKTransitions для перехода между сценами. При создании сцены настроек я хотел бы иметь возможность использовать некоторые элементы UIKit, такие как UISlider - однако я могу только когда-либо заставить UISlider появляться на сцене меню. Что именно мне нужно сделать, чтобы UISlider отображался только на сцене настроек? Спасибо, что нашли время, чтобы прочитать это.

1 ответ

Как сказал Knight of dragon, лучше всего избегать использования UIKit в SpriteKit.

Однако в некоторых случаях UIKit очень полезен в SpriteKit. Например, я использую UICollectionViews, чтобы показать свое меню выбора мира и уровня в одной из моих игр, потому что это самый хороший вариант (повторное использование ячеек, снятие очереди, анимационные эффекты и т. Д.).

Просто используйте свойство view 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()
}

Надеюсь это поможет.

Другие вопросы по тегам