簡體   English   中英

SpriteKit View在ViewController的viewDidLoad中不顯示場景

[英]SpriteKit View not presenting Scene in ViewController's viewDidLoad

目標:一個紅色的矩形(屬於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和節點數。

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,則會顯示橙色屏幕。

您的場景沒有大小。 您可以通過使用尺寸初始化程序初始化場景來以編程方式設置尺寸。

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

或將場景的縮放模式設置為ResizeFill以便場景的大小將始終調整大小以匹配SKView的大小:

scene.scaleMode = SKSceneScaleMode.ResizeFill

另外,您可能想在這里查看答案以了解有關Sprite Kit縮放的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM