как сделать настраиваемый строковый атрибут для всех SKSpriteNodes? - PullRequest
0 голосов
/ 02 августа 2020

Я хочу сделать второй атрибут «name» для каждого SpriteNode следующим образом:

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

как мне выполнить sh это? Я пробовал использовать классы, но если мне это нравится:

class MySprite: SKSpriteNode{
var secondName = String()

}

, тогда я не могу этого сделать:

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

Значение типа «SKNode» не имеет члена «secondName»

1 Ответ

1 голос
/ 02 августа 2020

Вы можете использовать что-то подобное с 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!
...