2015-04-10 3 views
3

Я создаю игру. Когда игра закончена, я показываю кнопку «Играть снова», которая, в идеале, должна просто перезагрузить сцену.Как я могу перезапустить SKScene?

var viewSize = currentScene.view?.bounds.size 
let sceneG = Level1(size: viewSize!) 
currentScene.view?.presentScene(sceneG) 

но, к сожалению, я получаю эту ошибку:

Attemped to add a SKNode which already has a parent:

Поскольку некоторые узлы уже существуют в сцене, и не представляется возможным, чтобы добавить их снова.

Есть ли способ перезагрузить сцену или удалить все узлы перед тем, как снова представить сцену?

Спасибо


В соответствии с просьбой, это класс Level1:

import SpriteKit 
import CoreMotion 

class Level1: SKScene { 

    override func didMoveToView(view: SKView) { 
    //creation of nodes etc 
    } 
} 
+0

Ваш инициализатор уровня 1 возвращает тот же объект? –

+0

@InderKumarRathore Да, Level1 - это класс SKScene, который представлен и что я хотел бы перезагрузить – MeV

+0

Можете ли вы опубликовать метод 'Level1()'? –

ответ

1

Если вы ищете способ удаления всех детей сцены, используйте этот func removeAllChildren().

Посмотрите на документы SKNode в разделе Работа с деревьями узлов.

+0

Спасибо! Удаление всех детей решило мою проблему! :-) – MeV

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