Дети сцены не отображаются, если не добавлены в init - PullRequest
0 голосов
/ 02 ноября 2019

Я пытаюсь показать кнопки, если объект щелкается в сцене SceneKit, они видны как дочерние элементы сцены, но не отображаются на экране.

init(size: CGSize, gameController: GameController) {
        super.init(size: size)

        self.gameController = gameController
        self.scaleMode = .aspectFit

        // Label is shown in scene
        testLabel = SKLabelNode(text: "test")
        testLabel.position = CGPoint(x: 100, y: 100)
        testLabel.fontSize = 50.0
        testLabel.fontColor = UIColor.red
        addChild(testLabel)

        // Label is not shown in scene
        let timer = Timer(timeInterval: 1, repeats: false) { _ in 
            var label = SKLabelNode(text: "test 2")
            label.position = CGPoint(x: 200, y: 200)
            label.fontSize = 50.0
            label.fontColor = UIColor.red
            addChild(label)
        }      
}

1 Ответ

0 голосов
/ 03 ноября 2019

Я думаю, что вы делаете незапланированный таймер, а затем просто выбрасываете его. Вы, вероятно, имели в виду что-то вроде Timer.scheduledTimer (...)

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

Посмотрите на инициализаторы SKAction, в частности sequence (), wait (forDuration :), run ()

https://developer.apple.com/documentation/spritekit/skaction/action_initializers

...