在我的精灵工具包游戏中,当两个精灵发生碰撞时,我使用SKAction播放mp3文件.虽然游戏工作正常但我第一次发出声音时会注意到游戏中有一个小小的"hickup".完整的游戏停止了大约半秒钟.之后,一切都很好,以下所有声音都可以正常工作.我注意到在模拟器和我的iPhone 5s上的这种行为也是一样的.
我该怎么做才能防止这种情况发生?
Kar*_*uil 12
您可以通过创建SKAction播放来预加载声音文件.(您不需要运行该操作,因此声音实际上不会播放,但文件将被加载.)
SKAction *preload = [SKAction playSoundFileNamed:@"my-sound-effect.caf" waitForCompletion:NO];
Run Code Online (Sandbox Code Playgroud)
您不必保存此实例以供以后重复使用; 任何类似初始化的SKAction将在运行时立即播放.
作为旁注,并且因为我很难找到这个链接,这里是一个包含Apple的"iOS音频最佳实践"的文档的链接 ; 搜索"最佳".它不涉及预加载,但它确实讨论了格式,并建议使用打包在CAF文件中的未压缩,IMA4或AAC声音.我想到了这个,因为你的例子是播放MP3,这可能会或者可能不会使用比你想要的更多的CPU.