如何为所有 SKSpriteNode 制作自定义字符串属性?

how do I make a custom string attribute to all SKSpriteNodes?

我想为每个 SpriteNode 创建第二个“名称”属性,如下所示:

var MySprite = SKSpriteNode()
MySprite.name = "Sprite5"
MySprite.secondName = "FireGuy"

我该如何做到这一点?我试过使用 类,但是如果我这样做:

class MySprite: SKSpriteNode{
var secondName = String()

}

那我做不到:

for nodes in self.children{
     if node.secondName == "FireGuy"{
        print("yay!")
     }
}

类型 'SKNode' 的值没有成员 'secondName'

你可以像这样使用 userData

extension SKSpriteNode {
    var secondName: String {
        set {
            if self.userData == nil {
                self.userData = NSMutableDictionary()
            }
            self.userData?["secondName"] = newValue
        }
        get {
            self.userData?["secondName"] as? String ?? ""
        }
    }
}

然后:

let node = SKSpriteNode()
node.secondName = "Name!"
print(node.secondName) // Print: Name!