【Unity】Androidで音が遅延する問題
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が認識してくれないのよう