检查场景是否包含具有名称的节点

时间:2018-08-07 23:50:56

标签: swift sprite-kit

我正在尝试检查SpriteKit场景是否包含名称包含“ wall”的节点。 我已经尝试过if语句:

if children.contains(name?.range(of: "wall")) {

}

但是我得到这个错误: “无法转换'Range类型的值?'到预期的参数类型“ SKNode””

2 个答案:

答案 0 :(得分:0)

我可以理解您在尝试中要做的事情,但是不幸的是,您通常无法以与编写英语相同的方式编写Swift。

您应该致电enter image description here

children.contains(where: { $0.name?.contains("wall") ?? false })

contains(where:)接受闭包。它将闭包应用于序列中的每个项目。如果闭包的任何应用返回true,则contains(where:)返回true。

答案 1 :(得分:0)

您可以使用scene.childNode(withName:"//*wall*")在整棵树中搜索名为wall的节点,如果它不是nil,则说明存在一堵wall。

示例:

if let _ = scene.childNode(withName:"//*wall*"){
  //scene contains wall
}