2012-11-18 6 views
2

Monotouch 및 C#을 사용하여 iOS 용 전쟁 게임을 만들고 있습니다. 오디오 사운드 효과에 문제가 있습니다.Monotouch C#은 볼륨 컨트롤과 동시에 많은 소리를 재생합니다.

내가 원하는 것은 다음과 같습니다 : 많은 음향 효과를 동시에 (최대 10-20 회까지) 동시에 재생할 수 있고 볼륨을 조정하는 기능 (예 : 사용자가 총을 쏜 총계를 확대 한 경우) 볼륨이 커짐). 여기

내 문제가 있습니다 : AVAudioPlayer와

, 나는 볼륨을 조절할 수 있지만 난 단지 스레드 당 한 사운드를 재생할 수 있습니다. 그래서 여러 개의 소리를 내고 싶다면 수십개의 실을 겹치게해야합니다 ... 이것은 전쟁 게임으로 전장에서 20 명의 군인을 보여줍니다. 각 군인은 모든 군인이 정확히 똑같은 시간에 발화 할 수 있기 때문에 총을 쏘면 총소리 소리를 낼 수있는 "사운드 스레드"가 있어야합니다. 나는 많은 스레드를 만드는 데 문제가 없지만 내 게임에는 이미 수십 개의 스레드가 항상 실행되고 있으며 수십개를 추가하면 문제가 생길 수 있습니다 ... 맞습니까? 그래서 나는 너무 많은 스레드를 추가하는이 길을 가고 싶지 않다. 내가 가지고 있지 않다면 ...

SystemSound를 사용하면 같은 스레드에서 원하는만큼 많은 소리를들을 수 있지만 조정할 수는 없다. 볼륨 .... 그래서 내 주변의 작품은, 내가 가진 모든 사운드 효과에 대해 - 4 가지 볼륨으로 4 번 저장합니다. 그것은 큰 고통입니다 ... SystemSounds로 볼륨을 조절하는 방법은 무엇입니까 ??

이 두 가지 모두 내 요구 사항 중 일부에 대한 답변이지만 어느 것도 적합하지 않은 것으로 보입니다. AVAudioPlayer 멀티 스레딩 악몽 길로 가야합니까? 또는 SystemSound 멀티 파일과 다른 볼륨 레벨의 악몽 길? 아니면 이것을 할 수있는 더 좋은 방법이 있습니까? 사전에

감사합니다.

+0

"그러나 나의 게임은 이미 모든 시간을 실행 스레드의 수십있다"- 정말입니까? 왜 그런가요? –

+0

각 병사는 두 개의 실을 가지고 있습니다. 병사를 전장으로 이동시키는 "이동"실. 병사 "스캐닝", "대상 지정", "슈팅", "다시로드"등을 담당하는 "Engage"스레드 ... 이들은 개별 스레드이므로 각 병사가 다음 병기와 독립적으로 작동 할 수 있습니다. 전장에 20 명의 병사가 있다면, 저기 40 개의 실 ... 50 명의 병사, 100 개의 실. 이제 각 군인에 대한 오디오 스레드 추가 가능성을 검토 중입니다 ... – LampShade

답변

3

마지막으로 내 문제에 대한 해결책을 찾았습니다. AVAudioPlayer는 한 번에 여러 사운드를 재생할 수 있지만 특정 파일 형식에서만 가능합니다 ... 자세한 내용은이 링크에서 사용할 수 있습니다. 사운드 효과를 동시에 재생할 수없는 이유는 파일 형식이 압축되어 있고 iphone에 하드웨어 압축 해제 기가 1 개 밖에 없기 때문입니다.

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