我正在开发一款小游戏,起初它的工作非常完美。它很好地加载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)
答案 0 :(得分:0)
如果没有看到您的代码,很难说,但如果您打开大量文件读取器,则可能会耗尽内存或使文件无法访问,直到从文件读取的其他节点消失为止。
您是否碰巧知道每次渲染时是否创建了新的音频节点?
Apples文档建议您创建一个可重复使用的SKAction。因此,如果您需要重用Fire操作,我会创建它的单例并反复运行该单个对象,而不是一次又一次地分配新的SKAction。