我正在尝试从 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)
扩展方法:
class func emitterNodeWithName(name: String) -> SKEmitterNode
{
return NSKeyedUnarchiver.unarchiveObjectWithFile(NSBundle.mainBundle().pathForResource(name, ofType: "sks")!) as SKEmitterNode
}
有什么想法吗?
请您参考如下方法:
我有同样的问题,似乎是当前测试版中的错误。 这是一个解决方法:
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
}
