我试图从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
}
有什么想法吗?
答案 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中的编辑器正在破坏文件。