无法转换类型为“ SKScene”的值

Saw*_*r05 5 sprite-kit swift3 ios10

我创建了一个新的Xcode Game项目。我剥离了项目中的默认动画,并添加了一个新的Swift文件和一个新的.sks,两者均称为MenuScene。

在我的GameViewController中,我希望通过GameScene用MenuScene替换对引用的引用,因为我希望此场景首先启动:

override func viewDidLoad() {
    super.viewDidLoad()

    // Load 'GameScene.sks' as a GKScene. This provides gameplay related content
    // including entities and graphs.
    if let scene = GKScene(fileNamed: "MenuScene") {

        // Get the SKScene from the loaded GKScene
        if let sceneNode = scene.rootNode as! MenuScene? {

            // Set the scale mode to scale to fit the window
            sceneNode.scaleMode = .aspectFill

            // Present the scene
            if let view = self.view as! SKView? {
                view.presentScene(sceneNode)

                view.ignoresSiblingOrder = true

                view.showsFPS = true
                view.showsNodeCount = true
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试启动时,出现以下错误:

Could not cast value of type 'SKScene' (0x1105624) to 'Spritekit10.MenuScene' (0x104c38).

如果我将其改回GameScene,它似乎具有完全相同的设置,则一切似乎都很好。

有人能指出这个问题的正确方向吗?

在我的MenuScene.sks“自定义类”下,我添加了一个MenuScene想法,那就是问题所在,但错误仍然显示(当我回到该文本字段时,文本字段似乎会随机清除自身。

import SpriteKit
import GameplayKit

class GameScene: SKScene {

    override func sceneDidLoad() {

    }
}
Run Code Online (Sandbox Code Playgroud)

import SpriteKit
import GameplayKit

class MenuScene: SKScene {

    override func sceneDidLoad() {

    }
}
Run Code Online (Sandbox Code Playgroud)

Kni*_*gon 1

您的问题是您正在尝试将 SKScene 向上转换为 MenuScene。

这是无法完成的,我看到您已经检查了 sks 文件中的自定义类以确保将其设置为 MenuScene,但是您确保正确保存了它吗?你需要输入它并按回车键,如果你不输入,那么场景将不会自动保存它,当你离开时它会被清除。