SKEmitterNode崩溃

时间:2014-08-27 19:20:31

标签: swift sprite-kit xcode6

我试图从sks文件加载SKEmitterNode并且我一直收到此错误:

Terminating app due to uncaught exception
'NSInvalidUnarchiveOperationException', 
reason: '*** -[NSKeyedUnarchiver decodeObjectForKey:]: 
cannot decode object of class (SKEditorScene)'

代码:

var explosion = SKEmitterNode.emitterNodeWithName("Explosion")

retval.addChild(explosion)

ExtensionMethod:

class func emitterNodeWithName(name: String) -> SKEmitterNode
{
    return NSKeyedUnarchiver.unarchiveObjectWithFile(NSBundle.mainBundle().pathForResource(name, ofType: "sks")!) as SKEmitterNode
}

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

我有同样的问题,似乎是当前测试版中的一个错误。 这是一个解决方法:

func particleEmitterWithName(name : NSString) -> SKEmitterNode?
{
    let path = NSBundle.mainBundle().pathForResource(name, ofType: "sks")

    var sceneData = NSData.dataWithContentsOfFile(path!, options: .DataReadingMappedIfSafe, error: nil)
    var archiver = NSKeyedUnarchiver(forReadingWithData: sceneData)

    archiver.setClass(SKEmitterNode.self, forClassName: "SKEditorScene")
    let node = archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as SKEmitterNode?
    archiver.finishDecoding()
    return node
}

答案 1 :(得分:0)

我注意到在粒子发射器编辑器中更改了一些属性后发生了崩溃。因此,您还可以在Xcode 5中编辑代码或编辑器中的属性,以避免崩溃。显然,Xcode 6中的编辑器正在破坏文件。