GameScene节点没有出现在SKScene中

时间:2018-04-26 03:23:04

标签: ios swift sprite-kit

我试图在屏幕上显示一些节点。

在我的GameViewController中,我有:

class GameViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        if let view = self.view as! SKView? {
            // Load the SKScene from 'GameScene.sks'
            // Alternative -> let scene = GameScene(size: view.frame.size)
            if let scene = SKScene(fileNamed: "AntarcticaScene") {
                // Set the scale mode to scale to fit the window
                scene.scaleMode = .aspectFill

                // Present the scene
                view.presentScene(scene)
            }

            view.ignoresSiblingOrder = true

            view.showsFPS = true
            view.showsNodeCount = true
        }
    }
}

在我的名为AntarcticaScene.swift的文件中,我有:

class AntarcticaScene: SKScene {

    var box: SKSpriteNode!

    override func didMove(to view: SKView) {
        // Initialize entities
        box = SKSpriteNode(color: UIColor.cyan, size: CGSize(width: 40, height: 60))

        print("Game scene loading")

        // Add entities
        addChild(box)

        // Set positions
        box.position.x = size.width  / 2
        box.position.y = size.height / 2
    }
}

我还有一个AntarcticaScene.sks文件,自定义类设置为AntarcticaScene。此sks文件在屏幕中央有一个红色方块。

现在,当我运行应用程序时,我可以看到sks文件中的红色方块,但我不明白为什么蓝色框不会出现在屏幕上,即使我的打印声明是被执行。

2 个答案:

答案 0 :(得分:0)

2件事......

在所有对象上设置zPosition

box = SKSpriteNode(color: UIColor.cyan, size: CGSize(width: 40, height: 60))
box.zPosition = 1
addChild(box)

场景的默认anchorPoint是0,0(这是屏幕的中心),除非更改意味着通过你的定位你将盒子添加到右上角并且盒子的3/4将会出来观点。

尝试将框设置为视图中的某个位置,以确保其显示

box.position = CGPoint(x: 100, y: 100)

答案 1 :(得分:-1)

尝试使用self.size.width代替size.width