如何为所有 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!
我想为每个 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!