我正在开发一个GameScene,我在场景编辑器中设置了一些节点,因为我想将它们直观地放在关卡中。 节点的所有名称都来自" platform1"到" platform5"。根据级别,可以有更多或更少的平台节点。
当加载关卡时,我想枚举所有节点,标题为" platform *"并将它们放入一个数组中。 现在我使用enumerateChildNodesWithName但是我没有得到块中的代码正常工作。 这就是我到目前为止所做的:
enumerateChildNodesWithName("//platform*", usingBlock: {node, _ in
if let platform = node as? PlatformNode {
print(platform.name)
}
})
并打印出以下错误消息:
CUICatalog:无效请求:请求子类型而不指定 成语
但是平台名称没有打印出来。 任何想法如何实现这一目标?
我的下一个目标是将每个平台都放到一个数组中,这样我就可以通过数组访问每个平台的属性。
有人伸出援助之手吗?
提前致谢...
答案 0 :(得分:1)
如果将平台添加到场景编辑器中的<%= current_user.name %>
容器中,它们将自动添加到容器的子阵列中(按添加顺序添加)。然后,您可以使用
SKNode
要在场景编辑器中将平台添加到 if let platforms = childNodeWithName("platforms") {
for platform in platforms.children {
print ("\(platform.name)")
}
}
,请将SKNode
(列为空)添加到编辑器中,正确设置SKNode
的名称(例如,平台),并通过在编辑器中设置平台的父属性来设置每个平台的父级(见下图)。
答案 1 :(得分:0)
您的搜索字符串不正确。你可以这样做:
class PlatformNode:SKSpriteNode{
}
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
let p1 = PlatformNode()
p1.name = "platform1"
let p2 = PlatformNode()
p2.name = "platform2"
let p3 = PlatformNode()
p3.name = "platform3"
let p4 = PlatformNode()
p4.name = "platform4"
let p5 = PlatformNode()
p5.name = "platform5"
addChild(p1)
addChild(p2)
addChild(p3)
addChild(p4)
addChild(p5)
enumerateChildNodesWithName("platform[1-3]", usingBlock: {node, _ in
if let platform = node as? PlatformNode {
print(platform.name)
}
})
}
}
这将为您提供名为platform1
,platform2
和platform3
的所有平台。要检索名为platform4和platform5的节点,您需要将搜索字符串更改为:
"platform[1-5]"