Что значит переход к новому виду ?. При создании игр SpriteKit мы склонны к переходу между SKScenes, а не просмотрами. Поэтому не пытайтесь создавать разные виды или viewControllers для каждой сцены, просто переход между SKScenes напрямую.
Что касается кнопок, доступно множество учебных пособий. Вы в основном создаете SKSpriteNode в качестве кнопки и ищите его в touchhesBegan и делаете что-то при нажатии.
Это простой пример здесь
https://nathandemick.com/2014/09/buttons-sprite-kit-using-swift/
Essential вы можете создать кнопку подкласс, подобную этой.
class Button: SKNode {
let defaultButton: SKSpriteNode
let activeButton: SKSpriteNode
var action:() ->()
init(defaultButtonImage: String, activeButtonImage: String, buttonAction: @escaping() ->()) {
defaultButton = SKSpriteNode(imageNamed: defaultButtonImage)
activeButton = SKSpriteNode(imageNamed: activeButtonImage)
activeButton.isHidden = true
action = buttonAction
super.init()
isUserInteractionEnabled = true
addChild(defaultButton)
addChild(activeButton)
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
activeButton.isHidden = false
defaultButton.isHidden = true
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
let location = touch.location(in: self)
if defaultButton.contains(location) {
activeButton.isHidden = false
defaultButton.isHidden = true
} else {
activeButton.isHidden = true
defaultButton.isHidden = false
}
}
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
let location = touch.location(in: self)
if defaultButton.contains(location) {
action()
}
activeButton.isHidden = true
defaultButton.isHidden = false
}
}
}
и чем в вашем соответствующем SKScene добавить свои кнопки
class StartScene: SKScene {
override func didMove(to view: SKView) {
let playButton = Button(defaultButtonImage: "button", activeButtonImage: "button_active", buttonAction: loadGameScene)
playButton.position = CGPoint(x: frame.midX, y: frame.midY)
addChild(playButton)
}
func loadGameScene() {
let scene = GameScene(...)
let transition = SKTransition....
scene.scaleMode = .aspectFill
view?.presentScene(scene, transition: transition)
}
}
Вы также можете проверить яблоки образец игры DemoBots для другой кнопки класса, например с использованием протоколов.
Надеется, что это помогает
доли того, что вы пытались до сих пор пожалуйста –