我创建了一个HomeScene.sks和一个HomeScene.swift。在GameViewController中,我将默认的“ GameScene”更改为“ HomeScene”,例如“

   override func viewDidLoad() {
    super.viewDidLoad()

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


当我在模拟器中运行它时,会显示启动屏幕,但随后会停止。在我的xcode输出屏幕中,我看到:


  2017-05-22 21:02:07.910 DiceWar [88707:2060079]-[DiceWar.HomeScene setNormalTexture:]:无法识别的选择器已发送到实例0x7fdba6008af0
  2017-05-22 21:02:07.915 DiceWar [88707:2060079] ***由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[DiceWar.HomeScene setNormalTexture:]:无法识别的选择器已发送至实例0x7fdba6008af0'


我在Google周围搜索,但找不到任何有用的信息。这些行告诉我什么?我使用了不好的质地吗?我还尝试向HomeScene.swift中的所有代码发送消息,但错误仍然出现。

我不确定这是因为英语不是我的母语,还是我的逻辑,但是我真的不明白xcode试图告诉我什么。

编辑
我想我找到了。因为有些东西有纹理。我从HomeScene.sks中删除了一个Color Sprite,现在它确实开始了。当我更换Color Sprite时,在使用以下代码之前没有问题:

settingsButton = self.childNode(withName: "settingsButton") as! SKSpriteNode


奇怪的是,我在另一张图像上使用了确切的一行(而不是我使用playButton的settingsButton)playButton行似乎没有问题。

最佳答案

该错误消息表示您的应用程序逻辑试图在类setNormalTexture(_:)上调用DiceWar.HomeScene,但是该类不知道如何处理该方法调用。

documentation


  此动作只能由SKSpriteNode对象执行。

关于swift - 更改哪个场景必须首先在GameViewController中后出现错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44120684/

10-09 03:35