嗯,这很奇怪:我想尝试使用Swift和Xcode6-b5创建一个小型Mac游戏,但是当我打开一个新的项目模板,并且没有改变任何东西时,GameScene就不是了。加载,当我尝试运行它时控制台显示这两行:
2014-08-09 20:50:21.294 PokemonSK[3808:303] +[PokemonSK.GameScene nodeWithFileNamed:]: unrecognized selector sent to class 0x100009150
2014-08-09 20:50:21.295 PokemonSK[3808:303] +[PokemonSK.GameScene nodeWithFileNamed:]: unrecognized selector sent to class 0x100009150
我看到类似这样的主题Link1,但他们没有解释如何修复它,我也不想升级到约塞米蒂...
有人有想法解决这个问题吗?
由于
(这是AppDeleguate代码,它可能有帮助)
import Cocoa
import SpriteKit
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet var window: NSWindow!
@IBOutlet var skView: SKView!
func applicationDidFinishLaunching(aNotification: NSNotification?) {
/* Pick a size for the scene */
let scene = GameScene(fileNamed: "GameScene")
/* Set the scale mode to scale to fit the window */
scene.scaleMode = .AspectFill
self.skView!.presentScene(scene)
/* Sprite Kit applies additional optimizations to improve rendering performance */
self.skView!.ignoresSiblingOrder = true
}
func applicationShouldTerminateAfterLastWindowClosed(sender: NSApplication) -> Bool {
return true;
答案 0 :(得分:0)
我不确定它是否是同一个东西,但我在iOS设备上尝试从beta 5运行项目时遇到了类似的问题。
而不是
let scene = GameScene(fileNamed: "GameScene")
尝试
if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
....
}
使用函数unarchiveFromFile,我认为它来自早期的模板。
extension SKNode {
class func unarchiveFromFile(file : NSString) -> SKNode? {
let path = NSBundle.mainBundle().pathForResource(file, ofType: "sks")
var sceneData = NSData.dataWithContentsOfFile(path, options: .DataReadingMappedIfSafe, error: nil)
var archiver = NSKeyedUnarchiver(forReadingWithData: sceneData)
archiver.setClass(self.classForKeyedUnarchiver(), forClassName: "SKScene")
let scene = archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as GameScene
archiver.finishDecoding()
return scene
}
}
答案 1 :(得分:0)
Apple显然正在添加新API并在广泛使用之前使用它们。这比应该更烦人,特别是因为有问题的代码并没有真正添加任何东西。
您可以通过一次更改获得基本演示代码。寻找:
let scene = GameScene(fileNamed:"GameScene")
在AppDelegate.swift文件中,将其更改为:
let scene = GameScene(size:self.skView.bounds.size)
答案 2 :(得分:0)
FYI大家,这个问题已在B6中修复。现在上面提到的解决方案将导致链接器错误。请务必删除您的unarchiveFromFile并恢复原始代码以使用fileNamed:。有点烦人,特别是考虑到错误是如此不透明。