Я сделал два расширения SCNNode функции, которые клонируют узлам из другой сцены:
extension SCNNode
{
func addNodeClonesWithNames(#fromScene: SCNScene, nodeNames: [String] )
{
for nodename in nodeNames
{
self.addClonedChildNode(fromScene.rootNode.childNodeWithName(nodename, recursively: true)!)
}
}
func addClonedChildNode(node: SCNNode)
{
self.addChildNode(node.clone() as! SCNNode)
}
}
в контроллере представления, погрузочные две сцены здесь:
let scnMain = SCNScene(named: "world1.dae")!
let scnAssets = SCNScene(named: "props.dae")!
// then add some nodes from the assets scene to the main scene's
// root node by name:
scnMain.rootNode.addNodeClonesWithNames(fromScene: scnAssets,
nodeNames: ["btnStartEngine","btnStop","btnReverse","btnEject"])
//
Конечно, это работает не только на корневом узле, но на всех SCNNodes. Я использую клонирование здесь, чтобы оригинал оставался неповрежденным для многократного использования.
Надеюсь, это полезно. Так рад, что это Свифт .. С уважением. Ted
Это кажется довольно неудобным, но спасибо, хотя – LinusGeffarth