我创建了一个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/