0

我有一个项目我已经做了一段时间了。我正在使用 Sprite-Kit,但现在希望能够从不同于 GameScene.swift 文件的 swift 文件中添加子节点。

加载 GameScene 的视图控制器的一些主要代码如下所示:

let skView:SKView = SKView()
let theScene:SKScene = SKScene()

class GameViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        if let theScene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
            // Configure the view.
            let skView = self.view as! SKView
            skView.showsFPS = true
            skView.showsNodeCount = true

            /* Sprite Kit applies additional optimizations to improve rendering performance */
            skView.ignoresSiblingOrder = true

            /* Set the scale mode to scale to fit the window */
            theScene.scaleMode = .ResizeFill  //.AspectFill
            var customSceneSize = CGSizeMake(2560, 1600)
            theScene.size = customSceneSize
            skView.presentScene(theScene)
            makeFakeStuff() // prepares some sample data
        }
    }

通常我使用“self.addChild”在 GameScene.swift 文件中添加精灵。这不适用于另一个 .swift 文件,所以我尝试了:

theScene.addChild(flyingCell)

我试过了:

skView.scene?.addChild(flyingCell)

这些执行没有错误,但屏幕上没有显示任何内容。当我尝试以其他方式使用相同的精灵代码并将其放入 GameScene.swift 文件并使用“self.addChild”时,它会绘制它,因此精灵代码(未显示)看起来很好(位置、zPosition 等)。我还将“flyingCell”设为全局变量,看看是否有帮助……不。有任何想法吗?

4

1 回答 1

1

我的代码中有两处错误。

第一个在我的问题中可见:我应该使用“var”而不是“let”声明“theScene”

第二个问题是在我的游戏场景中,我需要输入“theScene = self”

Apple DTS 帮我解决了这个问题。

于 2015-06-05T01:28:17.243 回答