如何将实例变量分配给SKSpriteNode?

时间:2015-12-10 21:33:49

标签: ios swift sprite-kit

我有几个SKSpriteNode被称为circle1circle2等。我想跟踪每个人使用Int count轮换的次数。我有什么方法可以指定count成为circle1的成员吗?像circle1.count = 2那样的事情circle1.position = ...会怎样?我不想为每个圈创建一个新变量,因为有很多。

1 个答案:

答案 0 :(得分:1)

您可以继承SKSpriteNode并使用名为count的公共属性创建一个新类。像这样:

class Circle: SKSpriteNode {

var count:Int = 0

init() {

    let texture = SKTexture(imageNamed: "circle")

    //Designated initializer
    super.init(texture: texture, color: SKColor.clearColor(), size: texture.size())

    //initialization stuff goes here
}

 required init?(coder aDecoder: NSCoder) {
     fatalError("init(coder:) has not been implemented")
 }
}

并像这样使用它:

let circle = Circle()

circle.count++

或者你可以使用userData属性作为子类的替代(引用来自文档):

  

讨论

     

您可以使用此属性将自己的数据存储在节点中。例如,您可以存储有关要使用的每个节点的游戏特定数据   在你的游戏逻辑中。这可以是创建的有用替代方案   你自己的节点子类来保存游戏数据。

请参阅here如何使用userData。