如何 运行 在一个函数中将两个 enumerateNodes 放在一起
How to run two enumerateNodes together in a function
我想 运行 在一个函数中同时枚举 2 个 ChildNodes 代码。目前,两个枚举代码都有效!
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 改回“一”。
如何避免这种情况?
我希望函数按如下方式工作:
当前名称为“two”的节点,更改为“one”
当前名称为“one”的节点,更改为“two”
谢谢!
据我所知,没有办法同时 运行 它们并记住每个状态并且仅在适用时更改名称
如果它们都是某个子 class 的对象,您可以在 class 中放置一个 属性 并检查 属性
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"
}
}
我想 运行 在一个函数中同时枚举 2 个 ChildNodes 代码。目前,两个枚举代码都有效!
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 改回“一”。
如何避免这种情况?
我希望函数按如下方式工作:
当前名称为“two”的节点,更改为“one”
当前名称为“one”的节点,更改为“two”
谢谢!
据我所知,没有办法同时 运行 它们并记住每个状态并且仅在适用时更改名称 如果它们都是某个子 class 的对象,您可以在 class 中放置一个 属性 并检查 属性
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"
}
}