我正在尝试构建一个游戏(Swift Sprite Kit),其中在用户通过一定数量的分数后,场景的背景会立即改变。 这不起作用(在GameScene中)
func addSwitchBackgrounds() {
let pointsLable = MLPointsLabel(num: 0)
if (pointsLable == 30) {
let backgroundTexture = SKTexture (imageNamed: "Store")
let backgroundImage = SKSpriteNode (texture: backgroundTexture,size:view!.frame.size)
backgroundImage.position = view!.center
}
}
任何人都可以帮忙吗?
答案 0 :(得分:2)
这个简单的例子应该指出正确的方法(只需复制和粘贴以查看它是如何工作的)......
import SpriteKit
class GameScene: SKScene, SKPhysicsContactDelegate {
let backgroundNode = SKSpriteNode(imageNamed: "background")
var score = 0
let label = SKLabelNode(fontNamed: "ArialMT")
override func didMoveToView(view: SKView) {
//setup scene
backgroundNode.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame))
label.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame))
label.text = "SCORE : 0"
self.addChild(backgroundNode)
self.addChild(label)
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
score++
if(score == 5){
self.backgroundNode.texture = SKTexture(imageNamed: "background_v2")
}
label.text = "SCORE : \(score)"
}
}
首先,您创建一个backgroundNode属性,然后在代码中更改其纹理。您不必在更新方法中对当前分数进行持续检查。只有在分数增加时才能进行检查。我不知道你在哪里调用addSwitchBackgrounds,但只是想让你知道,没有必要使用update:方法。