【问题标题】:Gamescene.sks and GameScene.swift don't seem to be linked in my projectGamescene.sks 和 GameScene.swift 在我的项目中似乎没有链接
【发布时间】:2016-11-13 02:30:10
【问题描述】:

我正在学习 SpriteKit,并使用关卡编辑器开始了一个小项目。

但是,由于某种原因,GameScene.swift 和 GameScene.sks 似乎没有关联。下面是 .sks 文件设置的屏幕截图和 .swift 文件的 viewDidLoad 中的小字声明。请让我知道我做错了什么。或者,如果我遗漏了什么。

spritekit .sks 文件。

我的视图控制器的 viewDidLoad 函数。

    class GameViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let screenSize = CGSize(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
        GameController.gameController.setGameManager(gameViewManager: self);

        if let view = self.view as! SKView? {
            // Load the SKScene from 'GameScene.sks'
            if let scene = SKScene(fileNamed: "GameScene") {

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

                // Present the scene
                view.presentScene(scene)

            }
        }
    }

【问题讨论】:

  • 这将有助于显示您在哪里启动 GameScene。通常在视图控制器中,当您实际运行应用程序时会显示什么?
  • @SkylerLauren,完成。当我运行应用程序时,sks 文件中的 GameScene 会运行。但是,.swift 文件中的脚本没有运行。
  • 一切似乎都是正确的。我会查看 GameScene.swift 文件。那里可能有一些愚蠢的东西,比如 GameScene 输入错误之类的。在 SKS 中键入 GameScene 时,自动完成功能是否还会为您提供一个选项?

标签: ios swift sprite-kit swift3


【解决方案1】:

我们有一个普通的GameScene.swift,应该打印“hello”,他的GameScene.sksGameViewController 调用。您没有指定 GameController 是什么,但这不是问题,因为我认为您可能只是失去了游戏的流程,所以我会尽力帮助您(不要担心, 当您长时间专注于游戏的其余部分并且不记得开始流程时会发生这种情况。

在您的Main.storyboard 中,您可能没有这样的情况:

您的GameViewController 是初始视图控制器。 我的意思是你应该在你的故事板上检查谁打电话给GameViewController,或者你的AppDelegate.swift(在didFinishLaunchingWithOptions中)是否在调用GameViewController之前停止流程或调用其他视图。

所以,检查谁是 IVC(初始视图控制器)并确保您的 GameViewController 是从开始调用或由其他使用断点的视图控制器调用的,或者只是在您的 viewDidLoad 中启动此打印:

print("∙ \(type(of: self))")

当您在库中添加或删除同名文件时,可能会发生另一种情况。在这种情况下,请尝试删除 GameScene.swiftGameScene.sks,清理并构建您的项目并重新添加这些文件(确保您的屏幕 GameScene.sks 具有正确的自定义类..) 检查您的编译源列表以控制您的GameScene.swift

希望对你有帮助。

【讨论】:

  • @allessandro 我检查了你说的。我在 GameViewController 的 didMove to View 函数中打印了一条语句。它工作正常并将该语句打印到控制台。我尝试删除引用并再次添加它。我检查了编译源和自定义类。
  • 自定义类对于将您的 swift 链接到 sks 很重要:有时它不起作用,因为它没有看到正确的 swift 模块(旧的或缓存的错误版本..)。检查并纠正它,直到它看到模块。
  • 谢谢!我不得不再次检查所有的东西以确保。出于某种原因,它会将模块名称中的连字符转换为下划线。
  • 好镜头,好消息。嗯,它有时会发生,很高兴知道它已经解决了。祝你的项目好运。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-07
相关资源
最近更新 更多