突然无法再读取文件了

时间:2017-05-05 03:40:06

标签: ios swift sprite-kit

我正在开发一款小游戏,起初它的工作非常完美。它很好地加载sks文件和声音文件。但经过几分钟的测试后,我开始得到#34;错误加载声音资源"和粒子效应都消失了。

我认为这可能是记忆问题,然而,游戏只需要大约120M,我还没有收到任何记忆警告。

那么它如何能够在开始时设法读取文件而几分钟后却无法读取文件?我不知道SpriteKit中有什么棘手的东西吗?例如在成功加载一百个文件后,游戏再也无法读取任何文件,直到用户摇动iPhone两次并将其颠倒...如果是真的,我可以通知玩家这样做游戏教程......

所以有人可以帮我处理这个......?非常感谢......

// The way I load background music:

let musicPath=Bundle.main.path(forResource: "Main", ofType: "mp3")
let url = URL(fileURLWithPath: musicPath!)
do{
    try main=AVAudioPlayer(contentsOf: url)     
}catch{    
    return
}

// The way I load sound files:

let a = SKAction.playSoundFileNamed("Fire",waitForCompletion:false)
audioNode.run(a)


// The way I load SKS files:

let emitterPath = Bundle.main.path(forResource: "Fire", ofType: "sks")!
let emitter = NSKeyedUnarchiver.unarchiveObject(withFile: emitterPath) as! SKEmitterNode
self.addChild(emitter)

1 个答案:

答案 0 :(得分:0)

如果没有看到您的代码,很难说,但如果您打开大量文件读取器,则可能会耗尽内存或使文件无法访问,直到从文件读取的其他节点消失为止。

您是否碰巧知道每次渲染时是否创建了新的音频节点?

Apples文档建议您创建一个可重复使用的SKAction。因此,如果您需要重用Fire操作,我会创建它的单例并反复运行该单个对象,而不是一次又一次地分配新的SKAction。

Source