【问题标题】:Monotouch C# play many sounds simultaneously with volume controlMonotouch C# 通过音量控制同时播放多种声音
【发布时间】:2012-11-06 21:49:04
【问题描述】:

我正在使用 Monotouch 和 C# 为 iOS 制作战争游戏。我在音频音效方面遇到了一些问题。

这就是我所需要的:能够同时播放多种音效(可能一次最多 10-20 个)和调节音量的能力(例如,如果用户放大战场枪声越来越响)。

这是我的问题:

使用 AVAudioPlayer,我可以调节音量,但每个线程只能播放 1 个声音。所以如果我想播放多个声音,我必须有几十个线程,以防它们重叠......这是一个战争游戏,想象战场上的 20 名士兵。每个士兵在射击时都会有一个“声音线程”来播放枪声,因为每个士兵都可能恰好在同一时间开火。制作大量线程没有问题,但我的游戏已经有几十个线程一直在运行,再添加几十个线程可能会给我带来麻烦……对吗?所以我宁愿不走这条增加几十个线程的路,除非我也有......

使用 SystemSound,我可以在同一个线程中播放任意数量的声音,但我无法调节音量....所以我的工作是,对于我拥有的每种声音效果 - 将其保存为 4 4 次不同的体积。这是一个很大的痛苦......有什么方法可以使用 SystemSounds 调节音量??

这两个都满足了我的一些要求,但似乎都不是天衣无缝的。我应该走 AVAudioPlayer 多线程噩梦之路吗?还是 SystemSound 多文件、不同音量级别的噩梦之路?或者有更好的方法吗?

提前致谢。

【问题讨论】:

  • “但是我的游戏已经有几十个线程一直在运行” - 真的吗?这是为什么呢?
  • 每个士兵有两个线程。一个“移动”线程,负责在战场上移动士兵。还有一个“Engage”线程,负责士兵“扫描”、“定位”、“射击”、“重装”等……它们是独立的线程,因此每个士兵都可以独立于下一个士兵操作。所以如果战场上有20个士兵,那就是40个线程……50个士兵,100个线程。现在我正在考虑为每个士兵添加音频线程...

标签: c# xamarin.ios avaudioplayer system-sounds


【解决方案1】:

终于找到了解决我问题的方法。 AVAudioPlayer 能够一次播放多个声音,但只能使用某些文件格式……详细信息可在此链接中找到。我无法同时播放音效的原因是因为文件格式被压缩,而iphone只有1个硬件解压缩器。

http://brainwashinc.wordpress.com/2009/08/14/iphone-playing-2-sounds-at-once/

【讨论】:

    猜你喜欢
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    相关资源
    最近更新 更多