尝试将每个 SKSpriteNode 与新的 属性 一起使用

Trying to use every SKSpriteNode with a new property

我正在用 SpriteKit 做游戏,但我不知道如何 link 一个新的 属性(我们称之为 "value")到每个 SKSpriteNode。我已经尝试了一些事情:

-> 使用这样的结构:

struct mySprite {
    var sprite: SKSpriteNode
    var value: CGFloat
}

但是我无法分配,例如 sprite1.sprite = SKSpriteNode(imageNamed: "picture")

-> 尝试扩展 SKSpriteNode,XCode 不允许我添加新的 属性。

-> 构建一个继承自 SKSpriteNode 的新 class 添加一个新的 属性 调用值,如下所示:

 class mySprite : SKSpriteNode {
    var value: CGFloat = 0
}

但是,我无法执行以下代码行:

let sprite : mySprite = SKSpriteNode(imageNamed: "picture")

我认为我构建 class 的方式有误。

有什么想法吗?还算上我是 iOS 编程的小新手,所以我们将不胜感激。谢谢:)

您可以像这样创建自定义 class

class CustomSpriteNode : SKSpriteNode {
    var value: CGFloat = 0
}

用于创建自定义实例 class

let spriteNode : CustomSpriteNode = CustomSpriteNode(imageNamed: "picture.png")    
spriteNode.value = 10

有时最简单的选择是直接将数据存储在 SKNode 的 userData属性 中。

mySprite.userdata = ["myValue" :"asdf" ]

此处有更多示例:Swift spritekit set userdata

或者,正如其他人所建议的那样,您可以将节点子类化并添加您自己的属性。