我试图从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
}有什么想法吗?
发布于 2014-08-29 06:03:53
我有同样的问题,似乎是一个错误在目前的测试版。以下是一个解决办法:
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
}发布于 2014-08-29 11:38:37
我注意到,在更改粒子发射器编辑器中的一些属性后,会发生崩溃。因此,您也可以在代码或编辑器中编辑Xcode 5中的属性,以避免崩溃。显然,Xcode 6中的编辑器正在破坏文件。
https://stackoverflow.com/questions/25535337
复制相似问题