SpriteKit 视图未在 ViewController 的视图中显示场景DidLoad



目标:一个红色矩形(属于Brick类(应该出现在蓝色背景中,具有节点数和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和节点计数。

游戏场景

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,我得到了我的橙色屏幕。

您的场景没有大小。通过使用大小初始化器初始化场景,可以通过编程方式设置大小。

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

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

scene.scaleMode = SKSceneScaleMode.ResizeFill

此外,您可能想在此处查看答案,以了解有关精灵套件缩放的更多信息。

最新更新