在iOS游戏中播放声音的最方便的方法是什么?

12

我正在制作一款游戏,希望有一个背景循环的游戏音乐,并在其上有两个不同的声效通道。我想要控制这些通道的音量。我查看了fmod,但它超出了我的预算。现在,我正在查看由Apple提供的MixerHostAudio示例。它是一个清晰的例子,但对于只播放两个声音来说,代码有点冗长,超过1000行,因此我想知道是否应该使用其他方法。

我的理想API应该像这样:

SoundSystem *sounds = [SoundSystem soundSystemWithLoop:@"koto.mp3"]; 
[sounds play:@"chimes.mp3" channel:1 looping:YES volume:0.0];
[sounds fadeTo:1.0 channel:1 delay:0.5];
[sounds play:@"buddha_bell.mp3" channel:2];

在旧日里,CocosDenshion音效引擎对此非常有用。 - Fattie
3个回答

11
您可以使用AVAudioPlayer进行背景循环,使用Finch进行音效。两者都易于操作。您需要自己编写Finch上方的声道音量控制,但这也不难,只需一个具有公共音量控制的声音数组即可。

谢谢你指引我使用AVAudioPlayer和Finch。我能否只使用多个AVAudioPlayers?根据文档,似乎我可以有多个并且它们应该混合,但我还没有尝试过。 - Bemmu
1
你可以尝试使用AVAudioPlayer,但由于延迟过高,可能不适合用于游戏中(这也是我编写Finch的原因)。不过还是可以试试看,或许AVAudioPlayer最近有所改进。 - zoul
谢谢。对于我的需求来说,它似乎足够快了。 - Bemmu
在这种情况下,您无法做得更好,使用AVAudioPlayer没有需要添加的其他类,也没有可能会变得陈旧的第三方代码。 - zoul

11

CocosDenshion音频引擎可以做任何你想要的事情。

一旦将它添加到项目中,使用起来非常简单

CocosDenshion是Cocos2D游戏引擎的音频部分。

我个人不太喜欢Cocos2D(当然,很多人都喜欢并使用它),但是CocosDenshion的音效功能可以完全满足你的需求,没有问题。 它可以同时管理背景音乐循环和音效。处理所有的内存等等。

使用CocosDenshion很容易(只需将几个文件复制到您的项目中)-- 没有问题。(您无需处理整个Cocos2D情况...只需安装Denshion部分即可。)

希望这可以帮助!


0

我正在使用SoundMaster引擎。 它比CocosDension声音引擎好得多,因为它支持ARC内存管理和许多其他功能,例如淡入/淡出效果相对音量


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接