【问题标题】:SpriteKit View not presenting Scene in ViewController's viewDidLoadSpriteKit 视图未在 ViewController 的 viewDidLoad 中呈现场景
【发布时间】:2015-07-13 20:54:41
【问题描述】:

目标: 一个红色矩形(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,我会得到橙色屏幕。

【问题讨论】:

    标签: ios swift sprite-kit skscene uivewcontroller


    【解决方案1】:

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

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

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

    scene.scaleMode = SKSceneScaleMode.ResizeFill
    

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

    【讨论】:

    • 哈哈,感谢您再次前来救援,@Epic Byte。不幸的是,尽管如此,您的解决方案并没有帮助我(尽管它可能解决了另一个无法识别的问题)。我仍然得到相同的结果。
    • @SirJony 设置场景的背景颜色,而不是 SKView。
    • @SirJony 我猜显示你的 Brick 类时出错。
    • 你是对的。所以我的场景已经启动并运行,但我的 Brick 没有。我会看一下代码,如果我不能解决它,请发布一个问题。再次感谢!对于未来的观众,您能否用您在 cmets 中显示的内容更新您的答案?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 2017-12-20
    • 1970-01-01
    相关资源
    最近更新 更多