我想在一个函数中同时运行2个enumerateChildNodes代码。目前,两个枚举代码都有效!
func change() {
scene?.enumerateChildNodes(withName: "//*one*") {
(node, stop) in
node.name = "two"
}
scene?.enumerateChildNodes(withName: "//*two*") {
(node, stop) in
node.name = "one"
}
}
但是,由于第一个枚举将node.name更改为“两个”,这将触发第二个枚举,并将node.name更改回“一个”。
如何避免这种情况?
我希望该功能按以下方式工作:
当前名称为“两个”的节点,更改为“一个”
当前名称为“一个”的节点,更改为“两个”
谢谢!
据我所知,没有一种方法可以同时运行它们并记住每个状态,并且仅在适用时更改名称。如果它们都是某个子类的对象,则可以在该类中放置一个属性并进行检查属性
func change() {
scene?.enumerateChildNodes(withName: "//*one*") { (node, stop) in
if node is SomeInGameSubClass {
node.isSwapped = true
node.name = "two"
}
}
scene?.enumerateChildNodes(withName: "//*two*") { (node, stop) in
if node is SomeInGameSubClass {
if !node.isSwapped {
node.name = "one"
}
else {
node.isSwapped = false
}
}
}
}
或仅将第一个集合转换为任意名称,然后转换第二个集合,然后返回并再次转换第一个集合
func change() {
scene?.enumerateChildNodes(withName: "//*one*") { (node, stop) in
node.name = "temp"
}
scene?.enumerateChildNodes(withName: "//*two*") { (node, stop) in
node.name = "one"
}
scene?.enumerateChildNodes(withName: "//*temp*") { (node, stop) in
node.name = "two"
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句