2015-02-26 11 views
8

Ciao Sto cercando di rimuovere tutti i nodi dalla scena Scenekit, ma non riesco a capire come possa essere la vita.Come posso rimuovere tutti i nodi da una scena di Scenekit?

Mi sembra logico che ci sia una funzione per farlo automaticamente ma non riesco a trovarlo.

Nel contesto, sto cercando di rimuovere tutti i nodi in modo da poter ripristinare la mia scena, il che avverrà ragionevolmente spesso. Forse c'è un altro modo per farlo e mi andrebbe bene, non sono bloccato a dover rimuovere tutti i nodi.

Grazie!

risposta

3

è possibile creare una nuova scena o chiamare -[SCNNode removeFromParentNode] su ogni nodo figlio della scena rootNode

1

Dove è necessario rimuovere tutti i nodi, chiamare questo (se la scena non è self, cambiarlo) :

for (SCNNode *node in [self children]) { 
    [node removeFromParent] 
} 

Inoltre, se è necessario rimuovere ogni nodo salvo qualche, chiamare questo (per esempio, non vogliamo rimuovere 3 nodi, e sono chiamato a, b, e c)

for (SCNNode *node in [self children]) { 
    if (![node.name isEqualToString:@"a"] && ![node.name isEqualToString:@"b"] && ![node.name isEqualToString:@"c"]) { 
     [node removeFromParent] 
    } 
} 

Spero che questo aiuti!

13

Prova questa (supponendo che si sta utilizzando Swift):

rootNode.enumerateChildNodesUsingBlock { (node, stop) -> Void in 
     node.removeFromParentNode() 
    } 

funziona per me.

-1

il modo più semplice che ho trovato per rimuovere tutti i nodi da una scena è:

self.removeAllChildren() 

Questo ha funzionato bene per me in XCode versione 7.2

+0

perché questo è stato votato? – Crashalot

+0

Questo metodo non è disponibile in SceneKit al giorno d'oggi – marcelosalloum

3

Per me ha funzionato come di seguito:

sceneView.session.pause() 
sceneView.scene.rootNode.enumerateChildNodes { (node, stop) in 
node.removeFromParentNode() } 
+0

Inoltre, è possibile saltare la pausa della sessione – kavehmb

Problemi correlati