ios - 突然无法读取文件了

标签 ios swift sprite-kit

我正在开发一款小游戏,一开始它运行得非常完美。它可以很好地加载 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。

Source

关于ios - 突然无法读取文件了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43796105/

相关文章:

ios - 如何从远程 plist 文件中读取和保存数据

ios - setTexture 将我的 Sprite 的大小更改为更小,错误?

ios - Nativescript:iOS 回调上的 Zeroconf/Bonjour 发现不起作用

ios - 如果未在didFinishLaunchingWithOptions方法中初始化的结构无法工作

ios - 如何使用 XCTestSuite? ( swift 3)

iphone - MDM - 无线配置文件交付和配置

ios - 使用 NSFetchedResultsController 的 CoreData 性能。 UITableView 在数据导入期间卡住

macos - 有没有办法在 Swift 中以编程方式设置 NSCollectionView?

swift - 为什么在我的 update() 方法中多次调用 runAction() 函数?

ios - 在 SKScene 的子节点上运行一个简单的操作会导致 iOS 7.1 中的 EXC_BAD_ACCESS