【Unity】Androidで音が遅延する問題

f:id:nuakam:20180924115247p:plain

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が認識してくれないのよう