2016-11-14 2 views
-5

Я создаю свое второе приложение, но сначала игра iOS. Я все сделал с кодированием и уровнями.Правильный способ использования кнопок в SpriteKit

Но в конце я изо всех сил пытаюсь использовать кнопки в наборе спрайтов, поэтому я могу создать общий ресурс, например, или реализовать в нем меню настроек, один из способов, которым я пользуюсь, доказывается ниже.

Button = UIButton(type: UIButtonType.custom) 
    Button.frame = CGRect(x: 0, y: 0, width: 50, height: 50) 
    Button.center = CGPoint(x: (self.view?.frame.width)! - 30, y: 60) 
    Button.setImage(UIImage(named: "Pause"), for: UIControlState.normal) 
    Button.addTarget(self, action: #selector(PauseGame), for: UIControlEvents.touchUpInside) 
    self.view?.addSubview(Button) 

Теперь проблема с этой кнопкой в ​​том, что она всегда включать и отображается, независимо от того, какой экран или сцена, которую я нахожусь в.

Есть ли какой-либо другой способ использования кнопок?

Возможно, мне нужно использовать раскадровку в проекте SpriteKit для всех настроек, меню и дополнительных кнопок (например, нравится, делиться)?

ответ

1

Вы пытаетесь использовать UIKit в SpriteKit. Вот почему кнопка не удаляется при смене сцены. Линия:

self.view?.addSubview(Button) 

Добавляет кнопку к зрения, не сцены. Это важно, потому что контроллер просмотра отображает сцены в представлении, поэтому у вас есть 1 вид (обычно), который отображает сцены. Когда вы добавляете кнопку в представление, она фактически привязана к представлению, а не к сцене. Для добавления кнопки узла к сцены, попробуйте следующее:

let button = SKSpriteNode(imageNamed: "Paused") 
button.size = CGSize(width: 50, height: 50) 
button.position = CGPoint(x: (self.view?.frame.width)! - 30, y: 60) 
// Whatever else you want to do when setting up the button node 
addChild(button) 

Важным направлением здесь:

addChild(button) 

Потому что он добавляет SKSpriteNode к сцене. Это означает, что при переходе от сцены к сцене кнопка больше не будет оставаться в фиксированном положении и будет перемещаться со сценой.

Смежные вопросы