2015-02-26 6 views
8

Привет Я пытаюсь удалить все узлы из моей сцены Scenekit, но я не могу, чтобы жизнь меня определяла способ.Как удалить все узлы из сцены сцены?

Кажется логичным для меня, что должна быть функция для этого автоматически, но я не могу ее найти.

В контексте, я пытаюсь удалить все узлы, чтобы я мог сбросить свою сцену, что будет происходить достаточно часто. Возможно, есть и другой способ сделать это, и мне будет хорошо, я не задерживаюсь, чтобы удалить все узлы.

Спасибо!

ответ

3

вы можете либо создать новую сцену или вызвать -[SCNNode removeFromParentNode] на каждом ребенок узла сцены rootNode

1

Где вы должны удалить все ваши узлы, называют это (если сцена не self, изменить его) :

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

кроме того, если вам нужно удалить каждый узел для некоторого кроме, назвать это (скажем, мы не хотим, чтобы удалить 3 узлов, и они назвали a, b и c)

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

Надеюсь, что это поможет!

13

Попробуйте (если вы используете Swift):

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

работает для меня.

-1

самый простой способ я нашел, чтобы удалить все узлы из сцены:

self.removeAllChildren() 

Это хорошо работало для меня в XCode версии 7.2

+0

почему это проголосовало? – Crashalot

+0

Этот метод в настоящее время недоступен в SceneKit – marcelosalloum

3

Для меня работал, как показано ниже:

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

Также вы можете пропустить сеанс паузы – kavehmb

Смежные вопросы