Swift:从GameMenu.sks加载SKScene不起作用

时间:2019-01-25 10:18:59

标签: ios swift sprite-kit

我有问题,GameViewController无法加载我的GameMenu。如果我模拟我的应用程序,它将仅显示带有node:0和fps计数的灰屏。

这里是GameViewController.swift中的代码:

import UIKit
import SpriteKit
import GameplayKit

class GameViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    if let view = self.view as! SKView? {
        // Load the SKScene from 'GameScene.sks'
        if let scene = GameMenu(fileNamed: "GameMenu") {
            // 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
    }
}

我也尝试了以下代码:

if let scene = SKScene(fileNamed: "GameMenu")

但它什么也没改变。

我还将自定义类“ GameMenu”添加到GameMenu.sks中。

我认为问题是此if let scene = SKScene(fileNamed: "GameMenu")行。 我已经读过很多关于这个问题的文章,但是我的案例没有成功。

我也尝试过:

class GameViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    if let view = self.view as! SKView? {
        // Load the SKScene from 'GameScene.sks'
        if let gkScene = GKScene(fileNamed: "GameMenu.sks") {

            if let skScene = gkScene.rootNode as? SKScene {
                 // Set the scale mode to scale to fit the window
                skScene.scaleMode = .aspectFill

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

        view.ignoresSiblingOrder = true

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

但什么也没发生。

1 个答案:

答案 0 :(得分:0)

您必须从GKScene文件将其加载为.sks,并从其SKScene属性中获取rootNode

if let gkScene = GKScene(fileNamed: "GameMenu") {
  if let skScene = gkScene.rootNode as? SKScene {
     // TODO
  }
}