在我的关卡编辑器中,我创建了一个名为" windmill"的SKSpritenode。 为此,我添加了用户数据属性(rotation | String | left)
//I have no problem in loading the object in the GameScene class.
enumerateChildNodes(withName: "windmill") {windmillNode,_ in
windmill = windmillNode as? SKSpriteNode
windmillNode.zPosition = 3
windmillNode.move(toParent: _gameNode)
}
但我想要做的是调用用户数据属性并根据旋转值。我想设置角度。
---错误"无法分配类型' _?'
的不可变表达式
表达是否正确?
var angle: Int
if (windmillNode.userData?.object(forKey: "rotation")) = "left" {
angle = 360
} else {
angle = -360
}
答案 0 :(得分:1)
您的单个=
是一项作业,您希望进行比较,因此请使用==
。所以你的表达式看起来像是
let rotation = windmillNode.userData?.value(forKey: "rotation")
if let rotation = rotation as? String {
print(rotation == "left")
}
答案 1 :(得分:0)
var angle: Int
if String(describing: windmillNode.userData?.object(forKey: "rotation")) == "Optional(left)" {
angle = 360
} else {
angle = -360
}
在级别编辑器中将节点的用户数据值设置为字符串时。
在代码中调用用户数据值时,该值在我的实例中返回Optional(左)。不确定它是否会返回,而不只是"左"
更改=="字符串"正确匹配,指定正确的角度。