【发布时间】:2018-10-09 12:42:32
【问题描述】:
我正在尝试在不同位置的循环中添加 SCNNode 多个时间,但我可以在最后一个位置一次看到相同类型的节点。
下面是代码
let entityArray:[entity] = [.coin, .coin, .coin, .brick, .coin, .coin, .coin, .brick]
func setupworld() {
let scene = SCNScene(named: "art.scnassets/MainScene.scn")!
var zPosition = -10
var count = 0
let delta = -4
for entity in entityArray {
var node = SCNNode()
switch entity {
case .coin:
node = scene.rootNode.childNode(withName: "coin", recursively: true) ?? node
node.position = SCNVector3(0, -5, zPosition)
case .brick:
node = scene.rootNode.childNode(withName: "brick", recursively: true) ?? node
node.position = SCNVector3(0, 0, zPosition)
}
self.sceneView.scene.rootNode.addChildNode(node)
zPosition += delta
count += 1
}
}
它在最后位置显示一枚硬币和一块砖。
我是scenekit的新手,所以会做错事,请帮助我。
【问题讨论】:
-
你试过给他们不同的“名字”吗?
-
你不断地添加同一个节点。一个节点只能添加一次。
-
我对 SceneKit 几乎一无所知,但在
SCNNode上有一个clone函数。 -
我看了一件事,我以为你使用新的初始化节点来设置和添加,就像@rmaddy说的那样,你不应该再使用同一个节点,正确的做法是使用你的那个初始化并正确配置
-
var node = SCNNode() 进行初始化,问题是: node = scene.rootNode.childNode(withName: "coin", recursive: true) ??您每次检索现有节点的节点...
标签: swift scenekit arkit scnnode scnscene