我一直在努力实现一种方法来添加按钮,并在按下场景时切换到我的第二个视图。我已经阅读过其他文章,但在Swift 3中已经有了ZERO运气。我非常困惑,并且已经尝试过但很多次都失败了。希望你能帮助!谢谢!以编程方式将按钮添加到GameScene.swift,并按下时转换场景
SpriteKit中的Swift 3。
我一直在努力实现一种方法来添加按钮,并在按下场景时切换到我的第二个视图。我已经阅读过其他文章,但在Swift 3中已经有了ZERO运气。我非常困惑,并且已经尝试过但很多次都失败了。希望你能帮助!谢谢!以编程方式将按钮添加到GameScene.swift,并按下时转换场景
SpriteKit中的Swift 3。
你是什么意思向新视图过渡?在制作SpriteKit游戏时,我们倾向于在SKScenes而不是视图之间切换。所以不要试图为每个场景创建不同的视图或viewControllers,只是直接在SKScenes之间切换。
关于按钮,有很多教程可用。您基本上创建一个SKSpriteNode作为按钮,并在touchesBegan中查找它,并在按下按钮时执行某些操作。
这是这里
https://nathandemick.com/2014/09/buttons-sprite-kit-using-swift/
必要,你可以创建一个类似的按钮子类的简单例子。
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。
希望这有助于
嗨crashoverride777,请在时间,因为我想给予好评的答案:-) –
酷添加一些代码到你的答案,因为链接可能变得不可用,我现在就去看看。谢谢你提醒我 – crashoverride777
对,做得好。 –
份额你已经尝试什么到目前为止请 –