2015-01-15 53 views
0

我是Objective-C的新手,對處理基本音頻的正確方法感到非常困惑。我有一個簡單的遊戲完成,但一直與聲音問題鬥爭了幾天。在簡單的iOS遊戲中,音頻的最佳方法是什麼?

這是我的理解:

AVAudioPlayer:似乎非常適合玩更長的聲音,例如音樂主題覆蓋遊戲。

AudioServicesPlaySystem聲音:似乎理想的快速聲音效果,少於30秒。

當然,我會繼續思考我將使用AVAudioPlayer作爲主題音樂和SystemSound作爲我的音效。不幸的是,我立即注意到一個非常討厭的問題 - 這兩個是由不同音量來源控制的(SystemSoundServices使用鈴聲音量??)並且一般不會在一起玩。這不可能是大多數應用程序使用的設置。

然後我放棄了AudioServicesPlaySystemSound方法,並重新編程了AVAudioPlayer中的所有內容。這對音量很好,但造成可怕的滯後,無法處理快速的聲音序列。這對聲音效果似乎不太有用。

我現在正在研究OpenAL,它對於我的簡單遊戲來說似乎是嚴重的矯枉過正。所以有人請賜教 - 我錯過了什麼或是OpenAL是處理這種常見的音樂/ sfx遊戲格式的最佳方式?

+0

「在AVAudioPlayer中對所有內容進行了重新編程,這對音量起到了很好的作用,但造成可怕的滯後,無法處理快速的聲音序列」然後你做錯了。顯示你如何做。 – matt

+0

順便說一下,新的AVAudioEngine呢?對於遊戲來說,這非常完美,正如WWDC 2014視頻中的討論所展示的那樣。 – matt

回答

1

如果您在使用AVAudioPlayer時出現「滯後」,那麼您可能會犯錯。

但是,無論如何我建議你考慮AVAudioEngine。它的目的正是爲了讓你做類似OpenAL所做的事情,而且使用更簡單的編程接口。它非常適合簡單的遊戲和音效。 AVAudioEngine上的WWDC 2014視頻顯示它正是用於此目的。

+0

謝謝。我想我一定是一直在實施AVAudioPlayer錯誤,因爲它滯後。只要我知道它能夠順利工作以獲得快速音效,那麼我會再次嘗試一下,否則我會檢查AVAudioEngine。 – stobin

+0

爲了跟上這一點,我對快速觸摸仍然有明顯的滯後,我開始認爲這不僅僅是我。請參閱[此鏈接](http://gregheo.com/blog/simple-audio/)。 「使用AVAudioPlayer時仍然有一些非常明顯的延遲;對於簡單的聲音效果可能沒有問題,但總是會有OpenAL,以便更精確和及時地播放。」# – stobin

+0

「我會在我的答案中放一個」也許「,所以它是不是這樣一個全面的聲明! – matt

相關問題