Swift 我如何在这个Spritekit游戏中添加分数系统?

Swift 我如何在这个Spritekit游戏中添加分数系统?,swift,sprite-kit,Swift,Sprite Kit,我想不出在我的游戏中添加计分系统的方法。有人能帮我用一种可视化的GUI方式吗?非常感谢。我试着用一个int变量来做这件事,但它不起作用。如果你真的帮助我,再次感谢你 import SpriteKit let BallCategoryName = "ball" let PaddleCategoryName = "paddle" let BlockCategoryName = "block" let BlockNodeCategoryName = "blockNode" let BallCateg

我想不出在我的游戏中添加计分系统的方法。有人能帮我用一种可视化的GUI方式吗?非常感谢。我试着用一个int变量来做这件事,但它不起作用。如果你真的帮助我,再次感谢你

import SpriteKit

let BallCategoryName = "ball"
let PaddleCategoryName = "paddle"
let BlockCategoryName = "block"
let BlockNodeCategoryName = "blockNode"
let BallCategory   : UInt32 = 0x1 << 0 //     00000000000000000000000000000001
let BottomCategory : UInt32 = 0x1 << 1 //   00000000000000000000000000000010
let BlockCategory  : UInt32 = 0x1 << 2 // 00000000000000000000000000000100
let PaddleCategory : UInt32 = 0x1 << 3 // 00000000000000000000000000001000

class GameScene: SKScene, SKPhysicsContactDelegate {
var isFingerOnPaddle = false
override func didMoveToView(view: SKView) {
    super.didMoveToView(view)

    let bottomRect = CGRectMake(frame.origin.x, frame.origin.y, frame.size.width, 1)
    let bottom = SKNode()
    bottom.physicsBody = SKPhysicsBody(edgeLoopFromRect: bottomRect)
    addChild(bottom)

    // 1. Create a physics body that borders the screen
    let borderBody = SKPhysicsBody(edgeLoopFromRect: self.frame)
    // 2. Set the friction of that physicsBody to 0
    borderBody.friction = 0
    // 3. Set physicsBody of scene to borderBody
    self.physicsBody = borderBody

    physicsWorld.gravity = CGVectorMake(0, 0)

    let ball = childNodeWithName(BallCategoryName) as! SKSpriteNode
    ball.physicsBody!.applyImpulse(CGVectorMake(10, -10))

    ball.physicsBody!.allowsRotation = false
    ball.physicsBody!.friction = 0
    ball.physicsBody!.restitution = 1
    ball.physicsBody!.linearDamping = 0
    ball.physicsBody!.angularDamping = 0

}

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
    var touch = touches.first as! UITouch
    var touchLocation = touch.locationInNode(self)

    if let body = physicsWorld.bodyAtPoint(touchLocation) {
        if body.node!.name == PaddleCategoryName {
            println("Began touch on paddle")
            isFingerOnPaddle = true
        }
    }
}

override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
    // 1. Check whether user touched the paddle
    if isFingerOnPaddle {
        // 2. Get touch location
        var touch = touches.first as! UITouch
        var touchLocation = touch.locationInNode(self)
        var previousLocation = touch.previousLocationInNode(self)

        // 3. Get node for paddle
        var paddle = childNodeWithName(PaddleCategoryName) as! SKSpriteNode

        // 4. Calculate new position along x for paddle
        var paddleX = paddle.position.x + (touchLocation.x - previousLocation.x)

        // 5. Limit x so that paddle won't leave screen to left or right
        paddleX = max(paddleX, paddle.size.width/2)
        paddleX = min(paddleX, size.width - paddle.size.width/2)

        // 6. Update paddle position
        paddle.position = CGPointMake(paddleX, paddle.position.y)
    }

}

override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
    isFingerOnPaddle = false
}
导入SpriteKit
让BallCategoryName=“ball”
让PapperCategoryName=“桨”
让BlockCategoryName=“block”
让BlockNodeCategoryName=“blockNode”

让BallCategory:UInt32=0x1为游戏添加分数系统,您首先需要跟踪您的分数,它可以是一个Int变量

至于以图形用户界面的形式直观地显示,您可以使用一个SKLabelNode来表示屏幕上的文本,并根据用户的当前分数进行更新,该分数将由您使用的Int变量表示

至于持久化数据,请查看NSCoding,nsuser默认存储该分数,以便用户下次运行应用程序时可以再次使用该分数。