我正在开发一款小游戏,一开始它运行得非常完美。它可以很好地加载 sks 文件和声音文件。但经过几分钟的测试,我开始收到“加载声音资源时出错”的消息,并且粒子效果全部消失。
我以为可能是内存问题,然而游戏只占用了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)
最佳答案
如果没有看到您的代码,很难说,但如果您打开大量文件读取器,您可能会耗尽内存或使文件无法访问,直到从文件读取的其他节点消失为止。
您是否知道每次渲染音频节点时是否都会创建新的音频节点?
Apple 文档建议您创建一个可重复使用的 SKAction。因此,如果您需要重用 Fire 操作,我将创建它的单例并一遍又一遍地运行该单个对象,而不是一次又一次地分配新的 SKAction。
关于ios - 突然无法读取文件了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43796105/