Swift- SKEffectNode требуется некоторое время, чтобы появиться

Поэтому в моей игре есть кнопка паузы, при нажатии на которую сцена приостанавливается, и все, кроме одного SKNode (меню паузы), становится размытым. Я делаю это, создавая SKEffectNode с фильтром и добавляя к нему все, кроме меню паузы. Это работает, но для появления размытия на заднем плане требуется целых 2 секунды. Сцена приостанавливается, как только вы нажимаете кнопку, но размытие и меню паузы появляются только через несколько секунд. Любые идеи?

Вот код:

     override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {

         for touch in (touches as! Set<UITouch>) {
            let location = touch.locationInNode(self)

            if (self.nodeAtPoint(location).name == "PauseButton"){
                if(!scene!.paused) {
                    blurScene()

                    scene!.paused = true
                    self.addChild(pauseMenu!)
                }else {
                    removeBlur()

                    scene!.paused = false
                    pauseMenu!.removeFromParent()
                }
            }
        }
    }

    func blurScene() {
        blurNode = SKEffectNode() //Created in the beginning of the class
        let blur = CIFilter(name: "CIGaussianBlur",    withInputParameters: ["inputRadius": 15.0])
        blurNode!.filter = blur
        self.shouldEnableEffects = true

        for node in self.children {
            node.removeFromParent()
            blurNode!.addChild(node as! SKNode)
        }

        self.addChild(blurNode!)
    }

    func removeBlur() {
        var blurredNodes = [SKNode]()

        for node in blurNode!.children {
            blurredNodes.append(node as! SKNode)
            node.removeFromParent()
        }

        for node in blurredNodes {
            self.addChild(node as SKNode)
        }

        self.shouldEnableEffects = false
        blurNode!.removeFromParent()
    }

person Yoli Meydan    schedule 15.09.2015    source источник
comment
Я столкнулся с той же проблемой. Вы нашли ответ. Поделитесь, очень помогает   -  person Pruthvi Hariharan    schedule 06.04.2016


Ответы (1)


Попробуйте добавить SKEffectNode в качестве корневого представления и добавьте к нему дочерние узлы. Затем вы можете установить фильтр размытия уже, но

self.shouldEnableEffects = false

когда вы хотите просто размыть

self.shouldEnableEffects = true
person MichaR    schedule 03.09.2019