SpriteKit View不在ViewController的viewDidLoad中显示Scene

时间:2015-07-13 20:54:41

标签: ios swift sprite-kit skscene uivewcontroller

目标:的 红色矩形(砖类)应出现在带有节点数和fps的蓝色背景中。

现实: 灰色背景和节点计数和fps(例如,没有红色矩形或蓝色背景)

我有以下代码:

GameViewController

import SpriteKit

class GameViewController: UIViewController {

    override func loadView() {
        self.view = SKView(frame: UIScreen.mainScreen().bounds)
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        let scene: GameScene = GameScene()

        let viewAsSKView = self.view as! SKView
        viewAsSKView.showsFPS = true
        viewAsSKView.showsNodeCount = true
        viewAsSKView.backgroundColor = UIColor.blueColor()

        viewAsSKView.presentScene(scene)
    }
}

我最好猜测GameViewController出了什么问题,但我不确定是什么。必须调用viewDidLoad(),因为我得到了fps和节点数。

GameScene

class GameScene: SKScene {

    override func didMoveToView(view: SKView) {

        let myBrick = Brick()
        myBrick.position = CGPointMake(100, 100)
        self.addChild(myBrick)

    }

}

由于缺乏复杂性,我认为GameScene没有任何问题。

的AppDelegate

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
        self.window!.backgroundColor = UIColor.orangeColor()       
        self.window!.rootViewController = GameViewController()
        self.window!.makeKeyAndVisible()

        return true
    }

我知道我的AppDelegate没有任何问题,因为如果我将self.window!.rootViewController更改为UIViewController,我会得到我的橙色屏幕。

1 个答案:

答案 0 :(得分:2)

你的场景没有大小。您可以通过使用尺寸初始值设定项初始化场景来以编程方式设置尺寸。

let scene: GameScene = GameScene(size:view.bounds.size)

或将您的场景缩放模式设置为ResizeFill,以便场景的大小始终调整大小以匹配SKView的大小:

scene.scaleMode = SKSceneScaleMode.ResizeFill

此外,您可能希望查看答案here以了解有关Sprite Kit缩放的更多信息。