当第一个声音播放时,Sprite Kit游戏"hickup"

Tal*_*ode 7 sprite-kit

在我的精灵工具包游戏中,当两个精灵发生碰撞时,我使用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.


Hey*_*ara 4

我有一个类似的问题,所以这是我到目前为止发现的(我不知道它是否解决了问题,因为我现在无法尝试)。

我认为问题是你没有预加载音效。所以第一次播放的时候会加载然后播放。这就是你的游戏冻结的原因。

解决方案是在初始化场景时预加载效果。您可以在本教程中找到一个示例(向下滚动到名为“免费音效”的部分)。它非常清楚并且解释得很好。

希望能帮助到你。