エンジニア戦記

Unity + Androidで音の遅延が起こるのを直す

unityで音を鳴らすとけっこうな遅延がある。
色々検索して調べてみるとかなり根深い問題らしい。



結論からいえばこれはもうunity側では解決不可能な問題で、ネイティブコードで補うしか方法はない。

Android API では端末の音を鳴らすには MediaPlayer AudioTrack SoundPool のいずれかを使う。


最も遅延が少ないのはSoundPoolで(他のAPIは発声スピードを考えると使い物にならないレベル)、選択肢はほぼ一択の状況。


ただSoundPoolは割りとゴリ押しで音を鳴らしてるから、処理落ちやらなんやらのリスクがあったり、端末次第では遅延がよりひどくなったりしちゃう。
つまり、Androidの遅延解消はほぼ詰み( ´ー`)フゥー...

だから音ゲーアプリはIOS中心にリリースされてる。
Googleさんがやる気にならないと根本的な解決ができない。


それでもSoundPoolを使う

ゴリ押しだろうがなんだろうが、ぴったしタイミングで音を鳴らさねばならないときがあるのだ。

先駆者の人らも頭抱えながら模索してるからそれを参考にしよう。

G-MODE Engineers' Blog — Unity☓Androidアプリの発音遅延を解消する


最終的にはtsubakit1.hateblo.jpを参考にした。
というより、GithubからAPIをかりてAssetとして使った。

色々やったんだけどね…
なぜか自作したネイティブコードをunityが認識してくれないのよう

プライバシーポリシー 免責事項