Spritekit | Swift3 |关卡编辑器 - 从关卡编辑器引用SKSpritenodes的用户数据

时间:2016-10-28 16:33:58

标签: ios sprite-kit swift3

在我的关卡编辑器中,我创建了一个名为" 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
     }

2 个答案:

答案 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(左)。不确定它是否会返回,而不只是"左"

更改=="字符串"正确匹配,指定正确的角度。