Swift spritekit设置用户数据
在我的swift spritekit游戏中,我想在一个精灵上设置一个自定义值,我尝试这样做Swift spritekit设置用户数据,swift,sprite-kit,Swift,Sprite Kit,在我的swift spritekit游戏中,我想在一个精灵上设置一个自定义值,我尝试这样做 p.userData?.setValue(value: "Hello", forKey: "c") 但当我尝试此操作时,它会说“找不到接受所提供参数的'setValue'的重载” 因此,主要问题是: 如何在精灵上设置自定义值?方法中的第一个参数没有外部参数名称, 所以应该是 p.userData?.setValue("Hello", forKey: "c") 或者更好(因为userData是一个NSM
p.userData?.setValue(value: "Hello", forKey: "c")
但当我尝试此操作时,它会说“找不到接受所提供参数的'setValue'的重载”
因此,主要问题是:
如何在精灵上设置自定义值?方法中的第一个参数没有外部参数名称,
所以应该是
p.userData?.setValue("Hello", forKey: "c")
或者更好(因为userData
是一个NSMutableDictionary
并且没有键值编码
这里需要魔法):
还要注意(正如刚才在评论中提到的)您必须创建字典
第一:
或者,为字典分配键和值:
p.userData = ["c" : "Hello"]
您是否创建了NSMutableArray并将其分配给userData?默认情况下,属性为nil。为什么必须先创建它?为什么它默认为nil,而不是一个易变的字典呢?因为是否/何时使用它取决于你自己。为每个SKNode创建NSMutableDictionary是不必要的资源浪费。另一个很好的例子是SKNode的
physicsBody
属性。如果物理不用于该节点,则默认情况下无需创建physicsBody
。
p.userData = NSMutableDictionary()
p.userData?.setObject("Hello", forKey: "c")
p.userData = ["c" : "Hello"]