我有问题,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
    }
}


但什么也没发生。

最佳答案

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

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

关于ios - Swift:从GameMenu.sks加载SKScene不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54363223/

10-14 20:39