Skip to main content
 首页 » 操作系统

swift之SKEmitterNode 崩溃

2024年01月01日37del

我正在尝试从 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 
}