Crystal Hangul 的試玩回饋裡,「爆音」這個詞出現了三次。第一次是進戰鬥的時候,第二次是殺第一隻敵人的時候,第三次是戰鬥結束跳結算畫面的時候。三個爆音的原因各不相同,我修了四輪才全部解決。
第一輪:進戰鬥爆音
玩家從選關畫面進入戰鬥,畫面切換的瞬間聽到一聲短促的 click。每次進關都會發生。
原因是 AVAudioSession 和 AVAudioEngine 的第一次啟動。iOS 的音訊硬體在 session 被啟用的那一刻會做一次配置,這個配置過程會產生一個聽得到的 click 聲。原本的 code 在進入戰鬥時才啟動音訊引擎,所以每次進關都是一次「第一次啟動」。
我把啟動時機移到 App 啟動畫面的背後。App 一開的時候就呼叫 prewarm(),把 session 啟用、引擎跑起來、所有音效 buffer 全部預載。之後進戰鬥、回選單、再進戰鬥,音訊引擎全程在跑,